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;
}
}