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) |