| tsetlayout and setgeom are now togglable again - dwm - [fork] customized build … | |
| git clone git://src.adamsgaard.dk/dwm | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 20cd3360876f551c0f3b4c9c5a827a64b829e6ef | |
| parent a6a216f28cbc49afaace269c2662382a351fda24 | |
| Author: Anselm R Garbe <[email protected]> | |
| Date: Mon, 24 Mar 2008 13:49:19 +0000 | |
| setlayout and setgeom are now togglable again | |
| Diffstat: | |
| M config.def.h | 20 ++++++-------------- | |
| M dwm.1 | 14 ++++---------- | |
| M dwm.c | 46 +++++++++++++++++++----------… | |
| 3 files changed, 38 insertions(+), 42 deletions(-) | |
| --- | |
| diff --git a/config.def.h b/config.def.h | |
| t@@ -22,15 +22,11 @@ Rule rules[] = { | |
| /* func name bx by bw wx wy ww wh mx my mw mh tx ty … | |
| DEFGEOM(single, 0, 0, sw, 0, bh, sw, sh-bh, wx, wy, 0.55*sw, wh, mx+mw, wy,… | |
| DEFGEOM(dual, 0, 0,1280, 0, bh, ww, wh-bh, wx, wy, 1280,800-bh, 1280, 0,… | |
| -/* DEFGEOM(growmaster, bx, by, bw, wx, wy, ww, wh, mx, my, mw+20, mh, mx+mw, t… | |
| -/* DEFGEOM(shrinkmaster, bx, by, bw, wx, wy, ww, wh, mx, my, mw-20, mh, mx+mw,… | |
| Geom geoms[] = { | |
| /* symbol function */ | |
| - { "<>", single }, /* first entry is default */ | |
| - { ")(", dual }, | |
| -/* { "+|", growmaster },*/ | |
| -/* { "|-", shrinkmaster },*/ | |
| + { "[]", single }, /* first entry is default */ | |
| + { "[][]", dual }, | |
| }; | |
| /* layout(s) */ | |
| t@@ -49,22 +45,18 @@ Layout layouts[] = { | |
| #define MODKEY Mod1Mask | |
| Key keys[] = { | |
| /* modifier key function … | |
| - { MODKEY, XK_a, setgeom, … | |
| - { MODKEY, XK_d, setgeom, … | |
| { MODKEY, XK_p, spawn, | |
| "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGC… | |
| - { MODKEY|ShiftMask, XK_Return, spawn, "exec uxte… | |
| + { MODKEY|ShiftMask, XK_Return, spawn, … | |
| { MODKEY, XK_j, focusnext, … | |
| { MODKEY, XK_k, focusprev, … | |
| { MODKEY, XK_r, reapply, … | |
| { MODKEY, XK_Return, zoom, … | |
| { MODKEY, XK_Tab, viewprevtag, … | |
| - { MODKEY, XK_m, setlayout, … | |
| - { MODKEY, XK_f, setlayout, … | |
| - { MODKEY, XK_v, setlayout, … | |
| - { MODKEY, XK_h, setlayout, … | |
| - { MODKEY|ShiftMask, XK_space, togglefloating, … | |
| { MODKEY|ShiftMask, XK_c, killclient, … | |
| + { MODKEY, XK_space, setlayout, NU… | |
| + { MODKEY|ShiftMask, XK_space, togglefloating, … | |
| + { MODKEY|ControlMask, XK_space, setgeom, … | |
| { MODKEY, XK_0, view, … | |
| { MODKEY, XK_1, view, … | |
| { MODKEY, XK_2, view, … | |
| diff --git a/dwm.1 b/dwm.1 | |
| t@@ -57,17 +57,11 @@ click on a tag label adds/removes that tag to/from the foc… | |
| Start | |
| .BR xterm. | |
| .TP | |
| -.B Mod1\-f | |
| -Applies floating layout. | |
| +.B Mod1\-space | |
| +Toggles between layouts. | |
| .TP | |
| -.B Mod1\-m | |
| -Applies monocle layout. | |
| -.TP | |
| -.B Mod1\-v | |
| -Applies vertical tiled layout. | |
| -.TP | |
| -.B Mod1\-h | |
| -Applies horizontal tiled layout. | |
| +.B Mod1\-Control\-space | |
| +Toggles between geometries. | |
| .TP | |
| .B Mod1\-j | |
| Focus next window. | |
| diff --git a/dwm.c b/dwm.c | |
| t@@ -322,6 +322,10 @@ buttonpress(XEvent *e) { | |
| 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]); | |
| t@@ -341,6 +345,8 @@ buttonpress(XEvent *e) { | |
| return; | |
| } | |
| } | |
| + if((ev->x < x + blw) && ev->button == Button1) | |
| + setlayout(NULL); | |
| } | |
| else if((c = getclient(ev->window))) { | |
| focus(c); | |
| t@@ -426,7 +432,7 @@ configurenotify(XEvent *e) { | |
| if(ev->window == root && (ev->width != sw || ev->height != sh)) { | |
| sw = ev->width; | |
| sh = ev->height; | |
| - setgeom(NULL); | |
| + setgeom(geom->symbol); | |
| } | |
| } | |
| t@@ -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(); | |
| t@@ -1430,20 +1442,18 @@ setgeom(const char *arg) { | |
| 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) |