add incnmaster and setmfact commands
This commit is contained in:
		| @@ -41,9 +41,13 @@ static const char *termcmd[]  = { "kitty", "-o", "linux_display_server=wayland", | ||||
|  | ||||
| static const Key keys[] = { | ||||
| 	/* modifier                  key                 function        argument */ | ||||
| 	{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return,     spawn,          {.v = termcmd } }, | ||||
| 	{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return,     spawn,          {.v = termcmd} }, | ||||
| 	{ MODKEY,                    XKB_KEY_j,          focusstack,     {.i = +1} }, | ||||
| 	{ MODKEY,                    XKB_KEY_k,          focusstack,     {.i = -1} }, | ||||
| 	{ MODKEY,                    XKB_KEY_i,          incnmaster,     {.i = +1} }, | ||||
| 	{ MODKEY,                    XKB_KEY_d,          incnmaster,     {.i = -1} }, | ||||
| 	{ MODKEY,                    XKB_KEY_h,          setmfact,       {.f = -0.05} }, | ||||
| 	{ MODKEY,                    XKB_KEY_l,          setmfact,       {.f = +0.05} }, | ||||
| 	{ MODKEY,                    XKB_KEY_Tab,        view,           {0} }, | ||||
| 	{ MODKEY,                    XKB_KEY_t,          setlayout,      {.v = &layouts[0]} }, | ||||
| 	{ MODKEY,                    XKB_KEY_f,          setlayout,      {.v = &layouts[1]} }, | ||||
|   | ||||
							
								
								
									
										23
									
								
								dwl.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								dwl.c
									
									
									
									
									
								
							| @@ -30,6 +30,7 @@ | ||||
| #include <xkbcommon/xkbcommon.h> | ||||
|  | ||||
| /* macros */ | ||||
| #define MAX(A, B)               ((A) > (B) ? (A) : (B)) | ||||
| #define MIN(A, B)               ((A) < (B) ? (A) : (B)) | ||||
| #define CLEANMASK(mask)         (mask & ~WLR_MODIFIER_CAPS) | ||||
| #define VISIBLEON(C, M)         ((C)->mon == (M) && ((C)->tags & (M)->tagset[(M)->seltags])) | ||||
| @@ -131,6 +132,7 @@ static void cursorframe(struct wl_listener *listener, void *data); | ||||
| static void destroynotify(struct wl_listener *listener, void *data); | ||||
| static void focus(Client *c, struct wlr_surface *surface); | ||||
| static void focusstack(const Arg *arg); | ||||
| static void incnmaster(const Arg *arg); | ||||
| static void inputdevice(struct wl_listener *listener, void *data); | ||||
| static bool keybinding(uint32_t mods, xkb_keysym_t sym); | ||||
| static void keypress(struct wl_listener *listener, void *data); | ||||
| @@ -149,6 +151,7 @@ static void run(char *startup_cmd); | ||||
| static Client *selclient(void); | ||||
| static void setcursor(struct wl_listener *listener, void *data); | ||||
| static void setlayout(const Arg *arg); | ||||
| static void setmfact(const Arg *arg); | ||||
| static void setup(void); | ||||
| static void spawn(const Arg *arg); | ||||
| static void tag(const Arg *arg); | ||||
| @@ -469,6 +472,12 @@ focusstack(const Arg *arg) | ||||
| 	focus(c, NULL); | ||||
| } | ||||
|  | ||||
| void | ||||
| incnmaster(const Arg *arg) | ||||
| { | ||||
| 	selmon->nmaster = MAX(selmon->nmaster + arg->i, 0); | ||||
| } | ||||
|  | ||||
| void | ||||
| inputdevice(struct wl_listener *listener, void *data) | ||||
| { | ||||
| @@ -949,6 +958,20 @@ setlayout(const Arg *arg) | ||||
| 	/* XXX change layout symbol? */ | ||||
| } | ||||
|  | ||||
| /* arg > 1.0 will set mfact absolutely */ | ||||
| void | ||||
| setmfact(const Arg *arg) | ||||
| { | ||||
| 	float f; | ||||
|  | ||||
| 	if (!arg || !selmon->lt[selmon->sellt]->arrange) | ||||
| 		return; | ||||
| 	f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0; | ||||
| 	if (f < 0.1 || f > 0.9) | ||||
| 		return; | ||||
| 	selmon->mfact = f; | ||||
| } | ||||
|  | ||||
| void | ||||
| setup(void) | ||||
| { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user