--- bstack.c Wed Dec 31 19:00:00 1969 +++ bstack.c Sat May 31 12:11:38 2008 @@ -0,0 +1,33 @@ +void +bstack(void) { + int x, y, h, w, mh; + uint i, n; + Client *c; + + for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next), n++); + if(n == 0) + return; + + /* master */ + c = nexttiled(clients); + mh = mfact * wh; + resize(c, wx, wy, ww - 2 * c->bw, ((n == 1) ? wh : mh) - 2 * c->bw, resizehints); + + if(--n == 0) + return; + + /* tile stack */ + x = wx; + y = (wy + mh > c->y + c->h) ? c->y + c->h + 2 * c->bw : wh - mh; + w = ww / n; + h = (wy + mh > c->y + c->h) ? wy + wh - y : wh - mh; + if(h < bh) + h = wh; + + for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { + resize(c, x, y, /* remainder */ ((i + 1 == n) ? (wx + ww) - x + : w) - 2 * c->bw, h - 2 * c->bw, resizehints); + if(w != ww) + x = c->x + c->w + 2 * c->bw; + } +} --- config.def.h Sat May 31 12:10:31 2008 +++ config.def.h Sat May 31 12:11:52 2008 @@ -26,10 +26,13 @@ Rule rules[] = { double mfact = 0.55; Bool resizehints = True; /* False means respect size hints in tiled resizals */ +#include "bstack.c" + Layout layouts[] = { /* symbol arrange function */ { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ + { "TTT", bstack }, }; /* key definitions */