setlayout and setgeom are now togglable again
Anselm R Garbe garbeam@gmail.com
Mon, 24 Mar 2008 13:49:19 +0000
3 files changed,
38 insertions(+),
42 deletions(-)
M
config.def.h
→
config.def.h
@@ -22,15 +22,11 @@ /* geometries, s{x,y,w,h} and bh are already initualized here */
/* func name bx by bw wx wy ww wh mx my mw mh tx ty tw th mox moy mow moh */ DEFGEOM(single, 0, 0, sw, 0, bh, sw, sh-bh, wx, wy, 0.55*sw, wh, mx+mw, wy, ww-mw, wh, wx, wy, ww, wh) DEFGEOM(dual, 0, 0,1280, 0, bh, ww, wh-bh, wx, wy, 1280,800-bh, 1280, 0, ww-mw, sh, mx, my, mw, mh) -/* DEFGEOM(growmaster, bx, by, bw, wx, wy, ww, wh, mx, my, mw+20, mh, mx+mw, ty, tw-20, th, mox, moy, mow, moh) */ -/* DEFGEOM(shrinkmaster, bx, by, bw, wx, wy, ww, wh, mx, my, mw-20, mh, mx+mw, ty, tw+20, th, mox, moy, mow, moh) */ Geom geoms[] = { /* symbol function */ - { "<>", single }, /* first entry is default */ - { ")(", dual }, -/* { "+|", growmaster },*/ -/* { "|-", shrinkmaster },*/ + { "[]", single }, /* first entry is default */ + { "[][]", dual }, }; /* layout(s) */@@ -49,22 +45,18 @@ /* key definitions */
#define MODKEY Mod1Mask Key keys[] = { /* modifier key function argument */ - { MODKEY, XK_a, setgeom, ")(" }, - { MODKEY, XK_d, setgeom, "<>" }, { MODKEY, XK_p, spawn, "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" }, - { MODKEY|ShiftMask, XK_Return, spawn, "exec uxterm" }, + { MODKEY|ShiftMask, XK_Return, spawn, "exec uxterm" }, { MODKEY, XK_j, focusnext, NULL }, { MODKEY, XK_k, focusprev, NULL }, { MODKEY, XK_r, reapply, NULL }, { MODKEY, XK_Return, zoom, NULL }, { MODKEY, XK_Tab, viewprevtag, NULL }, - { MODKEY, XK_m, setlayout, "[M]" }, - { MODKEY, XK_f, setlayout, "><>" }, - { MODKEY, XK_v, setlayout, "[]=" }, - { MODKEY, XK_h, setlayout, "[]|" }, + { MODKEY|ShiftMask, XK_c, killclient, NULL }, + { MODKEY, XK_space, setlayout, NULL }, { MODKEY|ShiftMask, XK_space, togglefloating, NULL }, - { MODKEY|ShiftMask, XK_c, killclient, NULL }, + { MODKEY|ControlMask, XK_space, setgeom, NULL }, { MODKEY, XK_0, view, NULL }, { MODKEY, XK_1, view, tags[0] }, { MODKEY, XK_2, view, tags[1] },
M
dwm.1
→
dwm.1
@@ -57,17 +57,11 @@ .B Mod1\-Shift\-Return
Start .BR xterm. .TP -.B Mod1\-f -Applies floating layout. -.TP -.B Mod1\-m -Applies monocle layout. -.TP -.B Mod1\-v -Applies vertical tiled layout. +.B Mod1\-space +Toggles between layouts. .TP -.B Mod1\-h -Applies horizontal tiled layout. +.B Mod1\-Control\-space +Toggles between geometries. .TP .B Mod1\-j Focus next window.
M
dwm.c
→
dwm.c
@@ -322,6 +322,10 @@ Client *c;
XButtonPressedEvent *ev = &e->xbutton; if(ev->window == barwin) { + if((ev->x < bgw) && ev->button == Button1) { + setgeom(NULL); + return; + } x = bgw; for(i = 0; i < LENGTH(tags); i++) { x += textw(tags[i]);@@ -341,6 +345,8 @@ }
return; } } + if((ev->x < x + blw) && ev->button == Button1) + setlayout(NULL); } else if((c = getclient(ev->window))) { focus(c);@@ -426,7 +432,7 @@
if(ev->window == root && (ev->width != sw || ev->height != sh)) { sw = ev->width; sh = ev->height; - setgeom(NULL); + setgeom(geom->symbol); } }@@ -1417,12 +1423,18 @@ void
setgeom(const char *arg) { unsigned int i; - for(i = 0; arg && i < LENGTH(geoms); i++) - if(!strcmp(geoms[i].symbol, arg)) - break; - if(i == LENGTH(geoms)) - return; - geom = &geoms[i]; + if(!arg) { + if(++geom == &geoms[LENGTH(geoms)]) + geom = &geoms[0]; + } + else { + for(i = 0; i < LENGTH(geoms); i++) + if(!strcmp(geoms[i].symbol, arg)) + break; + if(i == LENGTH(geoms)) + return; + geom = &geoms[i]; + } geom->apply(); updatebarpos(); arrange();@@ -1430,20 +1442,18 @@ }
void setlayout(const char *arg) { - static Layout *revert = 0; unsigned int i; - if(!arg) - return; - for(i = 0; i < LENGTH(layouts); i++) - if(!strcmp(arg, layouts[i].symbol)) - break; - if(i == LENGTH(layouts)) - return; - if(revert && &layouts[i] == lt) - lt = revert; + if(!arg) { + if(++lt == &layouts[LENGTH(layouts)]) + lt = &layouts[0]; + } else { - revert = lt; + for(i = 0; i < LENGTH(layouts); i++) + if(!strcmp(arg, layouts[i].symbol)) + break; + if(i == LENGTH(layouts)) + return; lt = &layouts[i]; } if(sel)