--- bstack.c Wed Dec 31 19:00:00 1969 +++ bstack.c Mon Jan 14 22:06:07 2008 @@ -0,0 +1,45 @@ +void +bstack(void) { + unsigned int i, j, n, nx, ny, nw, nh, mh, tw; + Client *c, *mc; + + domwfact = dozoom = True; + + nh = 0; + + for(i = 0; i < mcount; i++) { + Monitor *m = &monitors[i]; + + for(n = 0, c = nexttiled(clients, m); c; c = nexttiled(c->next, m)) + n++; + + for(j = 0, c = mc = nexttiled(clients, m); c; c = nexttiled(c->next, m)) { + mh = (n == 1) ? m->wah : m->mwfact * m->wah; + tw = (n > 1) ? m->waw / (n - 1) : 0; + if(j == 0) { + nx = m->wax; + ny = m->way; + nh = mh - 2 * c->border; + nw = m->waw - 2 * c->border; + } + else { + if(j == 1) { + nx = m->wax; + ny += mc->h + 2 * mc->border; + nh = (m->way + m->wah) - ny - 2 * c->border; + } + if(j + 1 == n) + nw = (m->wax + m->waw) - nx - 2 * c->border; + else + nw = tw - 2 * c->border; + } + resize(c, nx, ny, nw, nh, RESIZEHINTS); + if((RESIZEHINTS) && ((c->h < bh) || (c->h > nh) || (c->w < bh) || (c->w > nw))) + resize(c, nx, ny, nw, nh, False); + if(n > 1 && tw != m->waw) + nx = c->x + c->w + 2 * c->border; + + j++; + } + } +} --- config.def.h Mon Jan 14 22:06:07 2008 +++ config.def.h Mon Jan 14 22:06:07 2008 @@ -30,10 +30,12 @@ #define MWFACT 0.6 /* master width factor [0.1 .. 0.9] */ #define RESIZEHINTS True /* False - respect size hints in tiled resizals */ #define SNAP 32 /* snap pixel */ +#include "bstack.c" Layout layouts[] = { /* symbol function */ { "[]=", tile }, /* first entry is default */ { "><>", floating }, + { "TTT", bstack }, }; /* key definitions */