--- /usr/local/src/dwm/dwm-0.9-virgin/tag.c 2006-08-15 04:09:18.000000000 -0400 +++ tag.c 2006-08-15 11:33:28.000000000 -0400 @@ -69,7 +69,7 @@ n++; if(n > 1) - h = (sh - bh) / (n - 1); + h = (sh - (wide ? mh : 0) - bh) / (n - 1); else h = sh - bh; @@ -89,23 +89,23 @@ else if(i == 0) { c->x = sx; c->y = sy + bh; - c->w = mw - 2; - c->h = sh - 2 - bh; + c->w = (wide ? sw : mw) - 2; + c->h = (wide ? mh : sh - bh) - 2; } else if(h > bh) { - c->x = sx + mw; - c->y = sy + (i - 1) * h + bh; - c->w = w - 2; + c->x = sx + (wide ? 0 : mw); + c->y = sy + (wide ? mh : 0) + (i - 1) * h + bh; + c->w = sw - (wide ? 0 : mw) - 2; if(i + 1 == n) c->h = sh - c->y - 2; else c->h = h - 2; } else { /* fallback if h < bh */ - c->x = sx + mw; - c->y = sy + bh; - c->w = w - 2; - c->h = sh - 2 - bh; + c->x = sx + (wide ? 0 : mw); + c->y = sy + (wide ? mh : 0) + bh; + c->w = sw - (wide ? 0 : mw) - 2; + c->h = sh - (wide ? mh : 0) - 2 - bh; } resize(c, False, TopLeft); i++; @@ -285,6 +285,13 @@ } void +togglelayout(Arg *arg) +{ + wide = !wide; + arrange(NULL); +} + +void toggletag(Arg *arg) { unsigned int i; --- /usr/local/src/dwm/dwm-0.9-virgin/main.c 2006-08-15 04:09:18.000000000 -0400 +++ main.c 2006-08-15 11:33:12.000000000 -0400 @@ -95,11 +95,12 @@ char stext[1024]; Bool *seltag; -int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; +int screen, sx, sy, sw, sh, bx, by, bw, bh, mw, mh; unsigned int ntags, numlockmask; Atom wmatom[WMLast], netatom[NetLast]; Bool running = True; Bool issel = True; +Bool wide = False; Client *clients = NULL; Client *sel = NULL; Cursor cursor[CurLast]; @@ -257,6 +258,7 @@ bx = by = 0; bw = sw; dc.h = bh = dc.font.height + 4; + mh = ((sh - bh) * MASTERW) / 100; wa.override_redirect = 1; wa.background_pixmap = ParentRelative; wa.event_mask = ButtonPressMask | ExposureMask; --- /usr/local/src/dwm/dwm-0.9-virgin/dwm.h 2006-08-15 04:09:18.000000000 -0400 +++ dwm.h 2006-08-15 11:33:07.000000000 -0400 @@ -69,12 +69,12 @@ extern const char *tags[]; extern char stext[1024]; -extern int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; +extern int screen, sx, sy, sw, sh, bx, by, bw, bh, mw, mh; extern unsigned int ntags, numlockmask; extern void (*handler[LASTEvent])(XEvent *); extern void (*arrange)(Arg *); extern Atom wmatom[WMLast], netatom[NetLast]; -extern Bool running, issel, *seltag; +extern Bool running, issel, wide, *seltag; extern Client *clients, *sel; extern Cursor cursor[CurLast]; extern DC dc; @@ -127,6 +127,7 @@ extern void settags(Client *c); extern void tag(Arg *arg); extern void togglemode(Arg *arg); +extern void togglelayout(Arg *arg); extern void toggletag(Arg *arg); extern void toggleview(Arg *arg); extern void view(Arg *arg); --- /usr/local/src/dwm/dwm-0.9-virgin/config.default.h 2006-08-15 04:09:18.000000000 -0400 +++ config.default.h 2006-08-15 11:28:46.000000000 -0400 @@ -35,6 +35,7 @@ { MODKEY|ControlMask|ShiftMask, XK_4, toggletag, { .i = 4 } }, \ { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \ { MODKEY, XK_tab, togglemode, { 0 } }, \ + { MODKEY, XK_o, togglelayout, { 0 } }, \ { MODKEY, XK_0, view, { .i = 0 } }, \ { MODKEY, XK_1, view, { .i = 1 } }, \ { MODKEY, XK_2, view, { .i = 2 } }, \