dwm-r1437-gaplessgrid.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-r1437-gaplessgrid.diff (1890B)
---
1 diff -up dwm-5.2-original/config.def.h dwm-5.2-modified/config.def.h
2 --- dwm-5.2-original/config.def.h 2008-09-09 21:46:17.000000000 +0200
3 +++ dwm-5.2-modified/config.def.h 2008-10-20 20:07:42.000000000 +0200
4 @@ -28,11 +28,13 @@ static Rule rules[] = {
5 static float mfact = 0.55; /* factor of master area size [0.05..0.95] */
6 static Bool resizehints = True; /* False means respect size hints in tiled resizals */
7
8 +#include "gaplessgrid.c"
9 static Layout layouts[] = {
10 /* symbol arrange function */
11 { "[]=", tile }, /* first entry is default */
12 { "><>", NULL }, /* no layout function means floating behavior */
13 { "[M]", monocle },
14 + { "###", gaplessgrid },
15 };
16
17 /* key definitions */
18 diff -up dwm-5.2-original/gaplessgrid.c dwm-5.2-modified/gaplessgrid.c
19 --- /dev/null 2008-10-20 20:09:51.000000000 +0200
20 +++ dwm-5.2-modified/gaplessgrid.c 2008-10-20 20:06:59.000000000 +0200
21 @@ -0,0 +1,38 @@
22 +void
23 +gaplessgrid(Monitor *m) {
24 + unsigned int n, cols, rows, cn, rn, i, cx, cy, cw, ch;
25 + Client *c;
26 +
27 + for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next))
28 + n++;
29 + if(n == 0)
30 + return;
31 +
32 + /* grid dimensions */
33 + for(cols = 0; cols <= n/2; cols++)
34 + if(cols*cols >= n)
35 + break;
36 + if(n == 5) /* set layout against the general calculation: not 1:2:2, but 2:3 */
37 + cols = 2;
38 + rows = n/cols;
39 +
40 + /* window geometries (cell height/width/x/y) */
41 + cw = m->ww / (cols ? cols : 1);
42 + cn = 0; /* current column number */
43 + rn = 0; /* current row number */
44 + for(i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next)) {
45 + if(i/rows+1 > cols-n%cols)
46 + rows = n/cols+1;
47 + ch = m->wh / (rows ? rows : 1);
48 + cx = m->wx + cn*cw;
49 + cy = m->wy + rn*ch;
50 + resize(c, cx, cy, cw - 2 * c->bw, ch - 2 * c->bw);
51 +
52 + i++;
53 + rn++;
54 + if(rn >= rows) { /* jump to the next column */
55 + rn = 0;
56 + cn++;
57 + }
58 + }
59 +}