diff -Naur dwmbase/config.def.h dwmfork/config.def.h --- dwmbase/config.def.h 2015-11-08 23:39:37.000000000 +0100 +++ dwmfork/config.def.h 2018-02-15 21:13:32.228417186 +0100 @@ -12,6 +12,7 @@ static const char selbgcolor[] = "#005577"; static const char selfgcolor[] = "#eeeeee"; static const unsigned int borderpx = 1; /* border pixel of windows */ +static unsigned int gappx = 1; /* gap pixel between windows */ static const unsigned int snap = 32; /* snap pixel */ static const int showbar = 1; /* 0 means no bar */ static const int topbar = 1; /* 0 means bottom bar */ @@ -64,6 +65,8 @@ { MODKEY, XK_b, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } }, + { MODKEY|ShiftMask, XK_j, movegap, {.i = +1 }}, + { MODKEY|ShiftMask, XK_k, movegap, {.i = -1 }}, { MODKEY, XK_i, incnmaster, {.i = +1 } }, { MODKEY, XK_d, incnmaster, {.i = -1 } }, { MODKEY, XK_h, setmfact, {.f = -0.05} }, diff -Naur dwmbase/dwm.c dwmfork/dwm.c --- dwmbase/dwm.c 2015-11-08 23:39:37.000000000 +0100 +++ dwmfork/dwm.c 2018-02-15 21:14:11.518414613 +0100 @@ -183,6 +183,7 @@ static void maprequest(XEvent *e); static void monocle(Monitor *m); static void motionnotify(XEvent *e); +static void movegap(const Arg * arg); static void movemouse(const Arg *arg); static Client *nexttiled(Client *c); static void pop(Client *); @@ -1209,6 +1210,16 @@ } } +void +movegap(const Arg *arg) +{ + if(arg->i < 0 && gappx > 0) + gappx--; + else if(arg->i > 0) + gappx++; + arrange(selmon); +} + Client * nexttiled(Client *c) { @@ -1666,7 +1677,7 @@ void tile(Monitor *m) { - unsigned int i, n, h, mw, my, ty; + unsigned int i, n, h, r, g = 0, mw, my, ty; Client *c; for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); @@ -1674,18 +1685,20 @@ return; if (n > m->nmaster) - mw = m->nmaster ? m->ww * m->mfact : 0; + mw = m->nmaster ? (m->ww - (g = gappx)) * m->mfact : 0; else mw = m->ww; for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) if (i < m->nmaster) { - h = (m->wh - my) / (MIN(n, m->nmaster) - i); + r = MIN(n, m->nmaster) - i; + h = (m->wh - my - gappx * (r - 1)) / r; resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); - my += HEIGHT(c); + my += HEIGHT(c) + gappx; } else { - h = (m->wh - ty) / (n - i); - resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0); - ty += HEIGHT(c); + r = n - i; + h = (m->wh - ty - gappx * (r - 1)) / r; + resize(c, m->wx + mw + g, m->wy + ty, m->ww - mw - g - (2*c->bw), h - (2*c->bw), False); + ty += HEIGHT(c) + gappx; } }