summaryrefslogtreecommitdiff
path: root/dwm.c
diff options
context:
space:
mode:
authorBenjamin Chausse <benjamin@chausse.xyz>2024-01-26 18:02:54 -0500
committerBenjamin Chausse <benjamin@chausse.xyz>2024-01-26 18:02:54 -0500
commit74f81efa72bf93d9ea0b06f183f4d704dfd35543 (patch)
treee627e5fb6666056869ad6f30106b53394f6128fa /dwm.c
parent08b02c85710ffb3a95e07e21a64c2e684cf277d8 (diff)
Only implement bstackhoriz as bstack
Diffstat (limited to 'dwm.c')
-rw-r--r--dwm.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/dwm.c b/dwm.c
index 7f61fae..0e9c67a 100644
--- a/dwm.c
+++ b/dwm.c
@@ -240,6 +240,7 @@ static int xerrordummy(Display *dpy, XErrorEvent *ee);
static int xerrorstart(Display *dpy, XErrorEvent *ee);
static void xinitvisual();
static void zoom(const Arg *arg);
+static void bstack(Monitor *m);
static void centeredmaster(Monitor *m);
/* variables */
@@ -2440,3 +2441,32 @@ centeredmaster(Monitor *m)
}
}
+static void
+bstack(Monitor *m) {
+ int w, mh, mx, tx, ty, th;
+ unsigned int i, n;
+ Client *c;
+
+ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
+ if (n == 0)
+ return;
+ if (n > m->nmaster) {
+ mh = m->nmaster ? m->mfact * m->wh : 0;
+ th = (m->wh - mh) / (n - m->nmaster);
+ ty = m->wy + mh;
+ } else {
+ th = mh = m->wh;
+ ty = m->wy;
+ }
+ for (i = mx = 0, tx = m->wx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
+ if (i < m->nmaster) {
+ w = (m->ww - mx) / (MIN(n, m->nmaster) - i);
+ resize(c, m->wx + mx, m->wy, w - (2 * c->bw), mh - (2 * c->bw), 0);
+ mx += WIDTH(c);
+ } else {
+ resize(c, tx, ty, m->ww - (2 * c->bw), th - (2 * c->bw), 0);
+ if (th != m->wh)
+ ty += HEIGHT(c);
+ }
+ }
+}