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)