diff -NU5 -r dwm-5.8.2/bstack.c dwm-5.8.2-bstack/bstack.c --- dwm-5.8.2/bstack.c 1970-01-01 01:00:00.000000000 +0100 +++ dwm-5.8.2-bstack/bstack.c 2010-06-15 17:47:44.000000000 +0200 @@ -0,0 +1,29 @@ +static void +bstack(Monitor *m) { + int x, y, h, w, mh; + unsigned int i, n; + Client *c; + + for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); + if(n == 0) + return; + /* master */ + c = nexttiled(m->clients); + mh = m->mfact * m->wh; + resize(c, m->wx, m->wy, m->ww - 2 * c->bw, (n == 1 ? m->wh : mh) - 2 * c->bw, False); + if(--n == 0) + return; + /* tile stack */ + x = m->wx; + y = (m->wy + mh > c->y + c->h) ? c->y + c->h + 2 * c->bw : m->wy + mh; + w = m->ww / n; + h = (m->wy + mh > c->y + c->h) ? m->wy + m->wh - y : m->wh - mh; + if(w < bh) + w = m->ww; + for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { + resize(c, x, y, /* remainder */ ((i + 1 == n) + ? m->wx + m->ww - x - 2 * c->bw : w - 2 * c->bw), h - 2 * c->bw, False); + if(w != m->ww) + x = c->x + WIDTH(c); + } +} diff -NU5 -r dwm-5.8.2/bstackhoriz.c dwm-5.8.2-bstack/bstackhoriz.c --- dwm-5.8.2/bstackhoriz.c 1970-01-01 01:00:00.000000000 +0100 +++ dwm-5.8.2-bstack/bstackhoriz.c 2010-06-15 17:47:44.000000000 +0200 @@ -0,0 +1,30 @@ +static void +bstackhoriz(Monitor *m) { + int x, y, h, w, mh; + unsigned int i, n; + Client *c; + + for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); + if(n == 0) + return; + /* master */ + c = nexttiled(m->clients); + mh = m->mfact * m->wh; + resize(c, m->wx, m->wy, m->ww - 2 * c->bw, (n == 1 ? m->wh : mh) - 2 * c->bw, False); + if(--n == 0) + return; + /* tile stack */ + x = m->wx; + y = (m->wy + mh > c->y + c->h) ? c->y + c->h + 2 * c->bw : m->wy + mh; + w = m->ww; + h = (m->wy + mh > c->y + c->h) ? m->wy + m->wh - y : m->wh - mh; + h /= n; + if(h < bh) + h = m->wh; + for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { + resize(c, x, y, w - 2 * c->bw, /* remainder */ ((i + 1 == n) + ? m->wy + m->wh - y - 2 * c->bw : h - 2 * c->bw), False); + if(h != m->wh) + y = c->y + HEIGHT(c); + } +} diff -NU5 -r dwm-5.8.2/config.def.h dwm-5.8.2-bstack/config.def.h --- dwm-5.8.2/config.def.h 2010-06-04 12:39:15.000000000 +0200 +++ dwm-5.8.2-bstack/config.def.h 2010-06-15 17:47:44.000000000 +0200 @@ -29,1 +29,3 @@ +#include "bstack.c" +#include "bstackhoriz.c" static const Layout layouts[] = { @@ -34,5 +36,7 @@ + { "TTT", bstack }, + { "===", bstackhoriz }, }; /* key definitions */ #define MODKEY Mod1Mask #define TAGKEYS(KEY,TAG) \