From 8664d1db43788dc0c2743d7b8cf8d0fd512d7603 Mon Sep 17 00:00:00 2001 From: tosu Date: Sun, 27 Aug 2023 06:13:51 +0200 Subject: [PATCH] Gaplessgrid patch + dwm binary --- config.h | 3 ++ dwm | Bin 83184 -> 83224 bytes gaplessgrid.c | 35 ++++++++++++++ patches/dwm-gaplessgrid-20160731-56a31dc.diff | 43 ++++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 gaplessgrid.c create mode 100644 patches/dwm-gaplessgrid-20160731-56a31dc.diff diff --git a/config.h b/config.h index 6f43c72..eca2d55 100644 --- a/config.h +++ b/config.h @@ -43,11 +43,13 @@ static const float mfact = 0.55; /* factor of master area size [0.05..0.95] static const int nmaster = 1; /* number of clients in master area */ static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ +#include "gaplessgrid.c" static const Layout layouts[] = { /* symbol arrange function */ { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ { "[M]", monocle }, + { "###", gaplessgrid }, }; /* key definitions */ @@ -131,6 +133,7 @@ static const Key keys[] = { { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_e, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_g, setlayout, {.v = &layouts[3] } }, { MODKEY, XK_space, setlayout, {0} }, { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, { MODKEY, XK_f, togglefullscreen, {0} }, diff --git a/dwm b/dwm index a071b103f5cd032fafe8238328291aa54c3fbcab..7fd863d3a7e68baee6523bdce9f9c7f9720b132d 100755 GIT binary patch delta 21480 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 IiqyULKZRNSkpKVy delta 20878 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 A5C8xG diff --git a/gaplessgrid.c b/gaplessgrid.c new file mode 100644 index 0000000..10808c5 --- /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; + cx = m->wx + cn*cw; + cy = m->wy + rn*ch; + resize(c, cx, cy, cw - 2 * c->bw, ch - 2 * c->bw, False); + rn++; + if(rn >= rows) { + rn = 0; + cn++; + } + } +} diff --git a/patches/dwm-gaplessgrid-20160731-56a31dc.diff b/patches/dwm-gaplessgrid-20160731-56a31dc.diff new file mode 100644 index 0000000..4f3bb13 --- /dev/null +++ b/patches/dwm-gaplessgrid-20160731-56a31dc.diff @@ -0,0 +1,43 @@ +URL: http://dwm.suckless.org/patches/gapless_grid +Add gapless grid layout. + +Index: dwm/gaplessgrid.c +=================================================================== +--- /dev/null ++++ dwm/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; ++ cx = m->wx + cn*cw; ++ cy = m->wy + rn*ch; ++ resize(c, cx, cy, cw - 2 * c->bw, ch - 2 * c->bw, False); ++ rn++; ++ if(rn >= rows) { ++ rn = 0; ++ cn++; ++ } ++ } ++}