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)