diff -Naur dwmbase/config.def.h dwmfork/config.def.h
--- dwmbase/config.def.h        2015-11-08 22:39:37.000000000 +0000
+++ dwmfork/config.def.h        2018-07-05 12:49:21.896327474 +0000
@@ -15,7 +15,7 @@
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 */
-
+static const int bargapsize         = 27;
/* tagging */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };

@@ -61,7 +61,6 @@
       /* modifier                     key        function        argument */
       { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
       { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = termcmd } },
-       { MODKEY,                       XK_b,      togglebar,      {0} },
       { MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
       { MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
       { MODKEY,                       XK_i,      incnmaster,     {.i = +1 } },
diff -Naur dwmbase/dwm.c dwmfork/dwm.c
--- dwmbase/dwm.c       2015-11-08 22:39:37.000000000 +0000
+++ dwmfork/dwm.c       2018-07-05 16:31:35.240036189 +0000
@@ -162,10 +162,7 @@
static void detach(Client *c);
static void detachstack(Client *c);
static Monitor *dirtomon(int dir);
-static void drawbar(Monitor *m);
-static void drawbars(void);
static void enternotify(XEvent *e);
-static void expose(XEvent *e);
static void focus(Client *c);
static void focusin(XEvent *e);
static void focusmon(const Arg *arg);
@@ -209,7 +206,6 @@
static void tag(const Arg *arg);
static void tagmon(const Arg *arg);
static void tile(Monitor *);
-static void togglebar(const Arg *arg);
static void togglefloating(const Arg *arg);
static void toggletag(const Arg *arg);
static void toggleview(const Arg *arg);
@@ -218,11 +214,9 @@
static void unmapnotify(XEvent *e);
static int updategeom(void);
static void updatebarpos(Monitor *m);
-static void updatebars(void);
static void updateclientlist(void);
static void updatenumlockmask(void);
static void updatesizehints(Client *c);
-static void updatestatus(void);
static void updatewindowtype(Client *c);
static void updatetitle(Client *c);
static void updatewmhints(Client *c);
@@ -249,7 +243,6 @@
       [ConfigureNotify] = configurenotify,
       [DestroyNotify] = destroynotify,
       [EnterNotify] = enternotify,
-       [Expose] = expose,
       [FocusIn] = focusin,
       [KeyPress] = keypress,
       [MappingNotify] = mappingnotify,
@@ -574,8 +567,7 @@
               sw = ev->width;
               sh = ev->height;
               if (updategeom() || dirty) {
-                       drw_resize(drw, sw, bh);
-                       updatebars();
+                       drw_resize(drw, sw, bh);
                       for (m = mons; m; m = m->next)
                               XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh);
                       focus(NULL);
@@ -702,67 +694,6 @@
}

void
-drawbar(Monitor *m)
-{
-       int x, xx, w, dx;
-       unsigned int i, occ = 0, urg = 0;
-       Client *c;
-
-       dx = (drw->fonts[0]->ascent + drw->fonts[0]->descent + 2) / 4;
-
-       for (c = m->clients; c; c = c->next) {
-               occ |= c->tags;
-               if (c->isurgent)
-                       urg |= c->tags;
-       }
-       x = 0;
-       for (i = 0; i < LENGTH(tags); i++) {
-               w = TEXTW(tags[i]);
-               drw_setscheme(drw, m->tagset[m->seltags] & 1 << i ? &scheme[SchemeSel] :
&scheme[SchemeNorm]);
-               drw_text(drw, x, 0, w, bh, tags[i], urg & 1 << i);
-               drw_rect(drw, x + 1, 1, dx, dx, m == selmon && selmon->sel && selmon->sel->tags & 1
<< i,
-                          occ & 1 << i, urg & 1 << i);
-               x += w;
-       }
-       w = blw = TEXTW(m->ltsymbol);
-       drw_setscheme(drw, &scheme[SchemeNorm]);
-       drw_text(drw, x, 0, w, bh, m->ltsymbol, 0);
-       x += w;
-       xx = x;
-       if (m == selmon) { /* status is only drawn on selected monitor */
-               w = TEXTW(stext);
-               x = m->ww - w;
-               if (x < xx) {
-                       x = xx;
-                       w = m->ww - xx;
-               }
-               drw_text(drw, x, 0, w, bh, stext, 0);
-       } else
-               x = m->ww;
-       if ((w = x - xx) > bh) {
-               x = xx;
-               if (m->sel) {
-                       drw_setscheme(drw, m == selmon ? &scheme[SchemeSel] : &scheme[SchemeNorm]);
-                       drw_text(drw, x, 0, w, bh, m->sel->name, 0);
-                       drw_rect(drw, x + 1, 1, dx, dx, m->sel->isfixed, m->sel->isfloating, 0);
-               } else {
-                       drw_setscheme(drw, &scheme[SchemeNorm]);
-                       drw_rect(drw, x, 0, w, bh, 1, 0, 1);
-               }
-       }
-       drw_map(drw, m->barwin, 0, 0, m->ww, bh);
-}
-
-void
-drawbars(void)
-{
-       Monitor *m;
-
-       for (m = mons; m; m = m->next)
-               drawbar(m);
-}
-
-void
enternotify(XEvent *e)
{
       Client *c;
@@ -781,15 +712,6 @@
       focus(c);
}

-void
-expose(XEvent *e)
-{
-       Monitor *m;
-       XExposeEvent *ev = &e->xexpose;
-
-       if (ev->count == 0 && (m = wintomon(ev->window)))
-               drawbar(m);
-}

void
focus(Client *c)
@@ -813,8 +735,7 @@
               XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
               XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
       }
-       selmon->sel = c;
-       drawbars();
+       selmon->sel = c;
}

/* there are some broken focus acquiring clients */
@@ -1171,7 +1092,6 @@
               XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);
               switch(ev.type) {
               case ConfigureRequest:
-               case Expose:
               case MapRequest:
                       handler[ev.type](&ev);
                       break;
@@ -1232,9 +1152,7 @@
       Window trans;
       XPropertyEvent *ev = &e->xproperty;

-       if ((ev->window == root) && (ev->atom == XA_WM_NAME))
-               updatestatus();
-       else if (ev->state == PropertyDelete)
+       if (ev->state == PropertyDelete)
               return; /* ignore */
       else if ((c = wintoclient(ev->window))) {
               switch(ev->atom) {
@@ -1249,14 +1167,10 @@
                       break;
               case XA_WM_HINTS:
                       updatewmhints(c);
-                       drawbars();
                       break;
               }
-               if (ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) {
+               if (ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName])
                       updatetitle(c);
-                       if (c == c->mon->sel)
-                               drawbar(c->mon);
-               }
               if (ev->atom == netatom[NetWMWindowType])
                       updatewindowtype(c);
       }
@@ -1328,7 +1242,6 @@
               XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);
               switch(ev.type) {
               case ConfigureRequest:
-               case Expose:
               case MapRequest:
                       handler[ev.type](&ev);
                       break;
@@ -1368,7 +1281,6 @@
       XEvent ev;
       XWindowChanges wc;

-       drawbar(m);
       if (!m->sel)
               return;
       if (m->sel->isfloating || !m->lt[m->sellt]->arrange)
@@ -1524,8 +1436,6 @@
       strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
       if (selmon->sel)
               arrange(selmon);
-       else
-               drawbar(selmon);
}

/* arg > 1.0 will set mfact absolutly */
@@ -1586,9 +1496,6 @@
       scheme[SchemeSel].border = drw_clr_create(drw, selbordercolor);
       scheme[SchemeSel].bg = drw_clr_create(drw, selbgcolor);
       scheme[SchemeSel].fg = drw_clr_create(drw, selfgcolor);
-       /* init bars */
-       updatebars();
-       updatestatus();
       /* EWMH support per view */
       XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
                       PropModeReplace, (unsigned char *) netatom, NetLast);
@@ -1690,15 +1597,6 @@
}

void
-togglebar(const Arg *arg)
-{
-       selmon->showbar = !selmon->showbar;
-       updatebarpos(selmon);
-       XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
-       arrange(selmon);
-}
-
-void
togglefloating(const Arg *arg)
{
       if (!selmon->sel)
@@ -1793,36 +1691,16 @@
}

void
-updatebars(void)
-{
-       Monitor *m;
-       XSetWindowAttributes wa = {
-               .override_redirect = True,
-               .background_pixmap = ParentRelative,
-               .event_mask = ButtonPressMask|ExposureMask
-       };
-       for (m = mons; m; m = m->next) {
-               if (m->barwin)
-                       continue;
-               m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, DefaultDepth(dpy,
screen),
-                                         CopyFromParent, DefaultVisual(dpy, screen),
-                                         CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
-               XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor);
-               XMapRaised(dpy, m->barwin);
-       }
-}
-
-void
updatebarpos(Monitor *m)
{
       m->wy = m->my;
       m->wh = m->mh;
       if (m->showbar) {
-               m->wh -= bh;
+               m->wh -= bargapsize;
               m->by = m->topbar ? m->wy : m->wy + m->wh;
-               m->wy = m->topbar ? m->wy + bh : m->wy;
+               m->wy = m->topbar ? m->wy + bargapsize : m->wy;
       } else
-               m->by = -bh;
+               m->by = -bargapsize;
}

void
@@ -1989,13 +1867,6 @@
               strcpy(c->name, broken);
}

-void
-updatestatus(void)
-{
-       if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext)))
-               strcpy(stext, "dwm-"VERSION);
-       drawbar(selmon);
-}

void
updatewindowtype(Client *c)