diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-18 11:09:36 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-18 11:10:03 +0100 |
commit | 92a9e09643a88a38d373d08f0f514d2bb7285358 (patch) | |
tree | b0c7f151d43baeb44951182ae7d1400cb4a9c8cb /gaplessgrid.c | |
parent | dde321282059f2d8bb79667267207edd012f6d8a (diff) | |
download | dwm-92a9e09643a88a38d373d08f0f514d2bb7285358.tar.gz dwm-92a9e09643a88a38d373d08f0f514d2bb7285358.tar.bz2 dwm-92a9e09643a88a38d373d08f0f514d2bb7285358.zip |
Merged laptop version with remote
Laptop had gapless grid
Diffstat (limited to 'gaplessgrid.c')
-rw-r--r-- | gaplessgrid.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gaplessgrid.c b/gaplessgrid.c new file mode 100644 index 0000000..5b9de89 --- /dev/null +++ b/gaplessgrid.c @@ -0,0 +1,35 @@ +void +gaplessgrid(Monitor *m) { + unsigned int n, cols, rows, cn, rn, i, cx, cy, cw, ch; + Client *c; + + for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++) ; + if(n == 0) + return; + + /* grid dimensions */ + for(cols = 0; cols <= n/2; cols++) + if(cols*cols >= n) + break; + if(n == 5) /* set layout against the general calculation: not 1:2:2, but 2:3 */ + cols = 2; + rows = n/cols; + + /* window geometries */ + cw = cols ? m->ww / cols : m->ww; + cn = 0; /* current column number */ + rn = 0; /* current row number */ + for(i = 0, c = nexttiled(m->clients); c; i++, c = nexttiled(c->next)) { + if(i/rows + 1 > cols - n%cols) + rows = n/cols + 1; + ch = (rows ? m->wh / rows : m->wh) - m->gappx; + cx = (m->wx + cn*cw) + m->gappx; + cy = (m->wy + rn*ch) + m->gappx; + resize(c, cx + m->gappx, cy, cw - 2 * c->bw - m->gappx, ch - 2 * c->bw, False); + rn++; + if(rn >= rows) { + rn = 0; + cn++; + } + } +} |