diff --git a/dwm b/dwm index e52451b..05f252c 100755 Binary files a/dwm and b/dwm differ diff --git a/dwm.c b/dwm.c index bd12858..4deb268 100644 --- a/dwm.c +++ b/dwm.c @@ -430,9 +430,15 @@ buttonpress(XEvent *e) } if (ev->window == selmon->barwin) { i = x = 0; - do + unsigned int occ = 0; + for(c = m->clients; c; c = c->next) + occ |= c->tags; + do { + /* do not reserve space for vacant tags */ + if(!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) + continue; x += TEXTW(tags[i]); - while (ev->x >= x && ++i < LENGTH(tags)); + } while (ev->x >= x && ++i < LENGTH(tags)); if (i < LENGTH(tags)) { click = ClkTagBar; arg.ui = 1 << i; @@ -717,11 +723,14 @@ drawbar(Monitor *m) } x = 0; for (i = 0; i < LENGTH(tags); i++) { + /* do not draw vacant tags */ + if(!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) + continue; 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); + 0, urg & 1 << i); x += w; } w = blw = TEXTW(m->ltsymbol); diff --git a/dwm.o b/dwm.o index 9878cf3..d0b847b 100644 Binary files a/dwm.o and b/dwm.o differ