diff options
-rw-r--r-- | config.h | 21 | ||||
-rw-r--r-- | dwm.c | 21 |
2 files changed, 26 insertions, 16 deletions
@@ -27,7 +27,7 @@ static const char *colors[][3] = { }; /* tagging */ -static const char *tags[] = { "1", "2", "3", "4", "5", "6" }; +static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8" }; static const Rule rules[] = { /* xprop(1): @@ -79,9 +79,12 @@ static const char *brightnessdown[] = { "brightness-down.sh", NULL }; static const char *screenshooter[] = { "screenshot.sh", NULL }; static const char *volup[] = { "volup.sh", NULL }; static const char *voldown[] = { "voldown.sh", NULL }; -static const char *volmute[] = { "volmute.sh", NULL }; +//static const char *volmute[] = { "volmute.sh", NULL }; (replaced with *next[] for different keyboards) static const char *firefox[] = { "firefox", "--new-window", NULL }; static const char *slock[] = { "slock", NULL }; +static const char *playpause[] = { "playerctl", "play-pause", NULL }; +static const char *next[] = { "f9.sh", NULL }; +static const char *previous[] = { "playerctl", "previous", NULL }; static Key keys[] = { /* modifier key function argument */ @@ -111,12 +114,14 @@ static Key keys[] = { { MODKEY, XK_period, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, - { MODKEY, XK_F4, spawn, {.v = brightnessup } }, - { MODKEY, XK_F3, spawn, {.v = brightnessdown } }, - { MODKEY, XK_Print, spawn, {.v = screenshooter } }, - { MODKEY, XK_F9, spawn, {.v = volmute } }, - { MODKEY, XK_F10, spawn, {.v = voldown } }, - { MODKEY, XK_F11, spawn, {.v = volup } }, + { MODKEY, XK_F4, spawn, {.v = brightnessup } }, + { MODKEY, XK_F3, spawn, {.v = brightnessdown } }, + { MODKEY, XK_Print, spawn, {.v = screenshooter } }, + { MODKEY, XK_F10, spawn, {.v = voldown } }, + { MODKEY, XK_F11, spawn, {.v = volup } }, + { MODKEY, XK_F7, spawn, {.v = previous } }, + { MODKEY, XK_F8, spawn, {.v = playpause } }, + { MODKEY, XK_F9, spawn, {.v = next } }, TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) @@ -437,7 +437,7 @@ attachstack(Client *c) void buttonpress(XEvent *e) { - unsigned int i, x, click; + unsigned int i, x, click, occ = 0; Arg arg = {0}; Client *c; Monitor *m; @@ -452,9 +452,14 @@ buttonpress(XEvent *e) } if (ev->window == selmon->barwin) { i = x = 0; - do + for (c = m->clients; c; c = c->next) + occ |= c->tags == 255 ? 0 : 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; @@ -756,19 +761,19 @@ drawbar(Monitor *m) } for (c = m->clients; c; c = c->next) { - occ |= c->tags; + occ |= c->tags == 255 ? 0 : c->tags; if (c->isurgent) urg |= c->tags; } 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, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); - if (occ & 1 << i) - drw_rect(drw, x + boxs, boxs, boxw, boxw, - m == selmon && selmon->sel && selmon->sel->tags & 1 << i, - urg & 1 << i); x += w; } w = blw = TEXTW(m->ltsymbol); |