--- bstack.c Wed Dec 31 19:00:00 1969 +++ bstack.c Sat Aug 11 14:40:27 2007 @@ -0,0 +1,56 @@ +/* See LICENSE file for copyright and license details. */ +#include "dwm.h" + +/* static */ + +static double master = MASTER; + +/* extern */ + +void +bstack(void) { + unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th; + Client *c; + + for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) + n++; + + /* window geoms */ + mh = (n > 1) ? (wah * master) / 1 : wah / (n > 0 ? n : 1); + mw = waw; + th = (n > 1) ? (wah * (1 - master)) / 1 : 0; + tw = (n > 1) ? waw / (n - 1) : 0; + + for(i = 0, c = clients; c; c = c->next) + if(isvisible(c)) { + unban(c); + if(c->isfloating) + continue; + c->ismax = False; + nx = wax; + ny = way; + if(i < 1) { + ny += i * mh; + nw = mw - 2 * c->border; + nh = mh - 2 * c->border; + } + else { + nx += (i - 1) * tw; + ny += mh * 1; + if(i + 1 == n) { /* remainder */ + nw = (wax + waw) - nx - 2 * c->border; + } + else { + nw = tw - 2 * c->border; + } + nh = th - 2 * c->border + 1; + } + resize(c, nx, ny, nw, nh, False); + i++; + } + else + ban(c); + if(!sel || !isvisible(sel)) + focus(NULL); + restack(); +} --- bstack.h Wed Dec 31 19:00:00 1969 +++ bstack.h Sat Aug 11 13:30:37 2007 @@ -0,0 +1,4 @@ +/* See LICENSE file for copyright and license details. */ + +/* bstack.c */ +void bstack(void); /* arranges all windows bottom stacked */ --- config.arg.h Sat Aug 11 11:38:26 2007 +++ config.arg.h Sat Aug 11 12:00:41 2007 @@ -26,11 +26,13 @@ static Rule rule[] = { \ /* layout(s) */ #include "tile.h" #include "float.h" +#include "bstack.h" #define LAYOUTS \ static Layout layout[] = { \ /* symbol function */ \ { "[]=", tile }, /* first entry is default */ \ { "><>", floating }, \ + { "TTT", bstack }, \ }; #define MASTER 0.6 /* 0.1 .. 0.9 */ #define SNAP 32 /* snap pixel */ --- config.default.h Sat Aug 11 11:38:26 2007 +++ config.default.h Sat Aug 11 12:00:19 2007 @@ -27,11 +27,13 @@ static Rule rule[] = { \ /* layout(s) */ #include "tile.h" #include "float.h" +#include "bstack.h" #define LAYOUTS \ static Layout layout[] = { \ /* symbol function */ \ { "[]=", tile }, /* first entry is default */ \ { "><>", floating }, \ + { "TTT", bstack }, \ }; #define MASTER 0.6 /* 0.1 .. 0.9 */ #define SNAP 32 /* snap pixel */ --- config.mk Sat Aug 11 11:38:26 2007 +++ config.mk Sat Aug 11 11:59:46 2007 @@ -4,7 +4,7 @@ VERSION = 4.4 # Customize below to fit your system # layouts -SRC = float.c tile.c +SRC = float.c tile.c bstack.c # paths PREFIX = /usr/local