diff --git a/config.def.h b/config.def.h index 1c0b587..28634b5 100644 --- a/config.def.h +++ b/config.def.h @@ -12,6 +12,7 @@ static const char col_gray2[] = "#444444"; static const char col_gray3[] = "#bbbbbb"; static const char col_gray4[] = "#eeeeee"; static const char col_cyan[] = "#005577"; +static const char col_borderbar[] = "#ff0000"; static const char *colors[][3] = { /* fg bg border */ [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, diff --git a/dwm.c b/dwm.c index 9fd0286..f1eeaa3 100644 --- a/dwm.c +++ b/dwm.c @@ -263,7 +263,7 @@ static void (*handler[LASTEvent]) (XEvent *) = { static Atom wmatom[WMLast], netatom[NetLast]; static int running = 1; static Cur *cursor[CurLast]; -static Clr **scheme; +static Clr **scheme, clrborder; static Display *dpy; static Drw *drw; static Monitor *mons, *selmon; @@ -696,17 +696,22 @@ dirtomon(int dir) void drawbar(Monitor *m) { - int x, w, tw = 0; + int x, y = borderpx, w, tw = 0; + int th = bh - borderpx * 2; + int mw = m->ww - borderpx * 2; int boxs = drw->fonts->h / 9; int boxw = drw->fonts->h / 6 + 2; unsigned int i, occ = 0, urg = 0; Client *c; + XSetForeground(drw->dpy, drw->gc, clrborder.pixel); + XFillRectangle(drw->dpy, drw->drawable, drw->gc, 0, 0, m->ww, bh); + /* draw status first so it can be overdrawn by tags later */ if (m == selmon) { /* status is only drawn on selected monitor */ drw_setscheme(drw, scheme[SchemeNorm]); tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */ - drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0); + drw_text(drw, mw - tw, y, tw + borderpx, th, 0, stext, 0); } for (c = m->clients; c; c = c->next) { @@ -714,32 +719,33 @@ drawbar(Monitor *m) if (c->isurgent) urg |= c->tags; } - x = 0; + x = borderpx; for (i = 0; i < LENGTH(tags); i++) { w = TEXTW(tags[i]); drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); - drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); + drw_text(drw, x, y, w, th, lrpad / 2, tags[i], urg & 1 << i); if (occ & 1 << i) - drw_rect(drw, x + boxs, boxs, boxw, boxw, + drw_rect(drw, x + boxs, y + boxs, boxw, boxw, m == selmon && selmon->sel && selmon->sel->tags & 1 << i, urg & 1 << i); x += w; } w = blw = TEXTW(m->ltsymbol); drw_setscheme(drw, scheme[SchemeNorm]); - x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0); + x = drw_text(drw, x, y, w, th, lrpad / 2, m->ltsymbol, 0); - if ((w = m->ww - tw - x) > bh) { + if ((w = mw - tw - x) > th) { if (m->sel) { drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]); - drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0); + drw_text(drw, x, y, w, th, lrpad / 2, m->sel->name, 0); if (m->sel->isfloating) - drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0); + drw_rect(drw, x + boxs, y + boxs, boxw, boxw, m->sel->isfixed, 0); } else { drw_setscheme(drw, scheme[SchemeNorm]); - drw_rect(drw, x, 0, w, bh, 1, 1); + drw_rect(drw, x, y, w, th, 1, 1); } } + drw_map(drw, m->barwin, 0, 0, m->ww, bh); } @@ -1546,7 +1552,7 @@ setup(void) if (!drw_fontset_create(drw, fonts, LENGTH(fonts))) die("no fonts could be loaded."); lrpad = drw->fonts->h; - bh = drw->fonts->h + 2; + bh = drw->fonts->h + 2 + borderpx * 2; updategeom(); /* init atoms */ utf8string = XInternAtom(dpy, "UTF8_STRING", False); @@ -1571,6 +1577,7 @@ setup(void) scheme = ecalloc(LENGTH(colors), sizeof(Clr *)); for (i = 0; i < LENGTH(colors); i++) scheme[i] = drw_scm_create(drw, colors[i], 3); + drw_clr_create(drw, &clrborder, col_borderbar); /* init bars */ updatebars(); updatestatus();