void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

02_dwm-bottomstack-6.1.diff (3212B)


      1https://dwm.suckless.org/patches/bottomstack/
      2
      3diff --git a/config.def.h b/config.def.h
      4index 7054c06..554f1db 100644
      5--- a/config.def.h
      6+++ b/config.def.h
      7@@ -39,6 +39,8 @@ static const Layout layouts[] = {
      8 	{ "[]=",      tile },    /* first entry is default */
      9 	{ "><>",      NULL },    /* no layout function means floating behavior */
     10 	{ "[M]",      monocle },
     11+	{ "TTT",      bstack },
     12+	{ "===",      bstackhoriz },
     13 };
     14 
     15 /* key definitions */
     16@@ -74,6 +76,8 @@ static Key keys[] = {
     17 	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
     18 	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
     19 	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
     20+	{ MODKEY,                       XK_u,      setlayout,      {.v = &layouts[3]} },
     21+	{ MODKEY,                       XK_o,      setlayout,      {.v = &layouts[4]} },
     22 	{ MODKEY,                       XK_space,  setlayout,      {0} },
     23 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
     24 	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
     25diff --git a/dwm.c b/dwm.c
     26index 0362114..c313b5e 100644
     27--- a/dwm.c
     28+++ b/dwm.c
     29@@ -233,6 +233,8 @@ static int xerror(Display *dpy, XErrorEvent *ee);
     30 static int xerrordummy(Display *dpy, XErrorEvent *ee);
     31 static int xerrorstart(Display *dpy, XErrorEvent *ee);
     32 static void zoom(const Arg *arg);
     33+static void bstack(Monitor *m);
     34+static void bstackhoriz(Monitor *m);
     35 
     36 /* variables */
     37 static const char broken[] = "broken";
     38@@ -2139,3 +2141,65 @@ main(int argc, char *argv[])
     39 	XCloseDisplay(dpy);
     40 	return EXIT_SUCCESS;
     41 }
     42+
     43+static void
     44+bstack(Monitor *m) {
     45+	int w, h, mh, mx, tx, ty, tw;
     46+	unsigned int i, n;
     47+	Client *c;
     48+
     49+	for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
     50+	if (n == 0)
     51+		return;
     52+	if (n > m->nmaster) {
     53+		mh = m->nmaster ? m->mfact * m->wh : 0;
     54+		tw = m->ww / (n - m->nmaster);
     55+		ty = m->wy + mh;
     56+	} else {
     57+		mh = m->wh;
     58+		tw = m->ww;
     59+		ty = m->wy;
     60+	}
     61+	for (i = mx = 0, tx = m->wx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
     62+		if (i < m->nmaster) {
     63+			w = (m->ww - mx) / (MIN(n, m->nmaster) - i);
     64+			resize(c, m->wx + mx, m->wy, w - (2 * c->bw), mh - (2 * c->bw), 0);
     65+			mx += WIDTH(c);
     66+		} else {
     67+			h = m->wh - mh;
     68+			resize(c, tx, ty, tw - (2 * c->bw), h - (2 * c->bw), 0);
     69+			if (tw != m->ww)
     70+				tx += WIDTH(c);
     71+		}
     72+	}
     73+}
     74+
     75+static void
     76+bstackhoriz(Monitor *m) {
     77+	int w, mh, mx, tx, ty, th;
     78+	unsigned int i, n;
     79+	Client *c;
     80+
     81+	for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
     82+	if (n == 0)
     83+		return;
     84+	if (n > m->nmaster) {
     85+		mh = m->nmaster ? m->mfact * m->wh : 0;
     86+		th = (m->wh - mh) / (n - m->nmaster);
     87+		ty = m->wy + mh;
     88+	} else {
     89+		th = mh = m->wh;
     90+		ty = m->wy;
     91+	}
     92+	for (i = mx = 0, tx = m->wx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
     93+		if (i < m->nmaster) {
     94+			w = (m->ww - mx) / (MIN(n, m->nmaster) - i);
     95+			resize(c, m->wx + mx, m->wy, w - (2 * c->bw), mh - (2 * c->bw), 0);
     96+			mx += WIDTH(c);
     97+		} else {
     98+			resize(c, tx, ty, m->ww - (2 * c->bw), th - (2 * c->bw), 0);
     99+			if (th != m->wh)
    100+				ty += HEIGHT(c);
    101+		}
    102+	}
    103+}