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