dwm-nrowgrid-6.1.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-nrowgrid-6.1.diff (2308B)
---
1 Author: Chris Noxz <chris@noxz.tech>
2
3 diff -upN dwm-6.1/config.def.h dwm-nrowgrid-6.1/config.def.h
4 --- dwm-6.1/config.def.h 2015-11-08 23:11:48.000000000 +0100
5 +++ dwm-nrowgrid-6.1/config.def.h 2018-10-01 10:44:05.631382842 +0200
6 @@ -34,11 +34,15 @@ static const float mfact = 0.55; /*
7 static const int nmaster = 1; /* number of clients in master area */
8 static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
9
10 +#define FORCE_VSPLIT 1
11 +#include "nrowgrid.c"
12 +
13 static const Layout layouts[] = {
14 /* symbol arrange function */
15 { "[]=", tile }, /* first entry is default */
16 { "><>", NULL }, /* no layout function means floating behavior */
17 { "[M]", monocle },
18 + { "###", nrowgrid },
19 };
20
21 /* key definitions */
22 diff -upN dwm-6.1/nrowgrid.c dwm-nrowgrid-6.1/nrowgrid.c
23 --- dwm-6.1/nrowgrid.c 1970-01-01 01:00:00.000000000 +0100
24 +++ dwm-nrowgrid-6.1/nrowgrid.c 2018-10-01 10:44:27.741263063 +0200
25 @@ -0,0 +1,52 @@
26 +void
27 +nrowgrid(Monitor *m)
28 +{
29 + unsigned int n = 0, i = 0, ri = 0, ci = 0; /* counters */
30 + unsigned int cx, cy, cw, ch; /* client geometry */
31 + unsigned int uw = 0, uh = 0, uc = 0; /* utilization trackers */
32 + unsigned int cols, rows = m->nmaster + 1;
33 + Client *c;
34 +
35 + /* count clients */
36 + for (c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
37 +
38 + /* nothing to do here */
39 + if (n == 0)
40 + return;
41 +
42 + /* force 2 clients to always split vertically */
43 + if (FORCE_VSPLIT && n == 2)
44 + rows = 1;
45 +
46 + /* never allow empty rows */
47 + if (n < rows)
48 + rows = n;
49 +
50 + /* define first row */
51 + cols = n / rows;
52 + uc = cols;
53 + cy = m->wy;
54 + ch = m->wh / rows;
55 + uh = ch;
56 +
57 + for (c = nexttiled(m->clients); c; c = nexttiled(c->next), i++, ci++) {
58 + if (ci == cols) {
59 + uw = 0;
60 + ci = 0;
61 + ri++;
62 +
63 + /* next row */
64 + cols = (n - uc) / (rows - ri);
65 + uc += cols;
66 + cy = m->wy + uh;
67 + ch = (m->wh - uh) / (rows - ri);
68 + uh += ch;
69 + }
70 +
71 + cx = m->wx + uw;
72 + cw = (m->ww - uw) / (cols - ci);
73 + uw += cw;
74 +
75 + resize(c, cx, cy, cw - 2 * c->bw, ch - 2 * c->bw, 0);
76 + }
77 +}