all repos — dwm @ 20cd3360876f551c0f3b4c9c5a827a64b829e6ef

my dwm build

setlayout and setgeom are now togglable again
Anselm R Garbe garbeam@gmail.com
Mon, 24 Mar 2008 13:49:19 +0000
commit

20cd3360876f551c0f3b4c9c5a827a64b829e6ef

parent

a6a216f28cbc49afaace269c2662382a351fda24

3 files changed, 38 insertions(+), 42 deletions(-)

jump to
M config.def.hconfig.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.1dwm.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.cdwm.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)