--- /usr/local/src/dwm/dwm-1.2-virgin/view.c 2006-08-30 07:00:05.000000000 -0400 +++ view.c 2006-08-31 11:14:32.000000000 -0400 @@ -86,7 +86,7 @@ n++; if(n > 1) - h = (sh - bh) / (n - 1); + h = (sh - (wide ? mh : 0) - bh) / (n - 1); else h = sh - bh; @@ -106,23 +106,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++; @@ -245,6 +245,15 @@ } void +togglelayout(Arg *arg) +{ + if(arrange == dotile) { + wide = !wide; + arrange(NULL); + } +} + +void toggleview(Arg *arg) { unsigned int i; @@ -258,6 +267,16 @@ } void +viewall(Arg *arg) +{ + unsigned int i; + + for(i = 0; i < ntags; i++) + seltag[i] = True; + arrange(NULL); +} + +void view(Arg *arg) { unsigned int i; --- /usr/local/src/dwm/dwm-1.2-virgin/draw.c 2006-08-30 07:00:05.000000000 -0400 +++ draw.c 2006-08-31 11:15:06.000000000 -0400 @@ -108,7 +108,7 @@ } dc.w = bmw; - drawtext(arrange == dotile ? TILESYMBOL : FLOATSYMBOL, dc.status, False); + drawtext(arrange == dotile ? (wide ? WIDESYMBOL : TILESYMBOL) : FLOATSYMBOL, dc.status, False); x = dc.x + dc.w; dc.w = textw(stext); --- /usr/local/src/dwm/dwm-1.2-virgin/event.c 2006-08-30 07:00:05.000000000 -0400 +++ event.c 2006-08-31 11:16:06.000000000 -0400 @@ -111,6 +111,8 @@ if(ev->x < x) { if(ev->button == Button1) view(&a); + else if(ev->button == Button2) + viewall(NULL); else if(ev->button == Button3) toggleview(&a); return; @@ -119,6 +121,8 @@ if(ev->x < x + bmw) { if(ev->button == Button1) togglemode(NULL); + else + togglelayout(NULL); } } else if((c = getclient(ev->window))) { --- /usr/local/src/dwm/dwm-1.2-virgin/main.c 2006-08-30 07:00:05.000000000 -0400 +++ main.c 2006-08-31 11:17:25.000000000 -0400 @@ -19,11 +19,12 @@ char stext[1024]; Bool *seltag; -int bx, by, bw, bh, bmw, mw, screen, sx, sy, sw, sh; +int bx, by, bw, bh, bmw, mw, mh, screen, sx, sy, sw, sh; 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]; @@ -130,6 +131,7 @@ setfont(FONT); bmw = textw(FLOATSYMBOL) > textw(TILESYMBOL) ? textw(FLOATSYMBOL) : textw(TILESYMBOL); + bmw = textw(WIDESYMBOL) > bmw ? textw(WIDESYMBOL) : bmw; sx = sy = 0; sw = DisplayWidth(dpy, screen); sh = DisplayHeight(dpy, screen); @@ -138,6 +140,7 @@ bx = by = 0; bw = sw; dc.h = bh = dc.font.height + 2; + mh = ((sh - bh) * MASTERW) / 100; wa.override_redirect = 1; wa.background_pixmap = ParentRelative; wa.event_mask = ButtonPressMask | ExposureMask; --- /usr/local/src/dwm/dwm-1.2-virgin/dwm.h 2006-08-30 07:00:05.000000000 -0400 +++ dwm.h 2006-08-31 11:18:36.000000000 -0400 @@ -68,12 +68,12 @@ extern const char *tags[]; extern char stext[1024]; -extern int bx, by, bw, bh, bmw, mw, screen, sx, sy, sw, sh; +extern int bx, by, bw, bh, bmw, mw, mh, screen, sx, sy, sw, sh; 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; @@ -135,6 +135,8 @@ extern Bool isvisible(Client *c); extern void restack(); extern void togglemode(Arg *arg); +extern void togglelayout(Arg *arg); extern void toggleview(Arg *arg); +extern void viewall(Arg *arg); extern void view(Arg *arg); extern void zoom(Arg *arg); --- /usr/local/src/dwm/dwm-1.2-virgin/config.default.h 2006-08-30 07:00:05.000000000 -0400 +++ config.default.h 2006-08-31 11:19:44.000000000 -0400 @@ -9,6 +9,7 @@ #define DEFMODE dotile /* dofloat */ #define FLOATSYMBOL "~" #define TILESYMBOL "#" +#define WIDESYMBOL "=" #define FONT "fixed" #define SELBGCOLOR "#666699" @@ -41,6 +42,8 @@ { MODKEY|ControlMask|ShiftMask, XK_5, toggletag, { .i = 4 } }, \ { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \ { MODKEY, XK_space, togglemode, { 0 } }, \ + { MODKEY, XK_o, togglelayout, { 0 } }, \ + { MODKEY, XK_0, viewall, { 0 } }, \ { MODKEY, XK_1, view, { .i = 0 } }, \ { MODKEY, XK_2, view, { .i = 1 } }, \ { MODKEY, XK_3, view, { .i = 2 } }, \