sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 3d6fab1dd66c9b41b5735fe98f3de66279b9f566
parent d10f6bc1d0b2ea2e073d743b4334c556eab12595
Author: Miles Alan <m@milesalan.com>
Date:   Mon, 17 Aug 2020 21:58:40 -0500

[dwm][patch] clientindicators: Add new patch - draws client indicators in bar

Diffstat:
Adwm.suckless.org/patches/clientindicators/dwm-clientindicators-6.2.diff | 48++++++++++++++++++++++++++++++++++++++++++++++++
Adwm.suckless.org/patches/clientindicators/dwm-clientindicators.png | 0
Adwm.suckless.org/patches/clientindicators/dwm-clientindicatorshidevacant-6.2.diff | 88+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adwm.suckless.org/patches/clientindicators/index.md | 19+++++++++++++++++++
4 files changed, 155 insertions(+), 0 deletions(-)

diff --git a/dwm.suckless.org/patches/clientindicators/dwm-clientindicators-6.2.diff b/dwm.suckless.org/patches/clientindicators/dwm-clientindicators-6.2.diff @@ -0,0 +1,48 @@ +From 8c72f9ea7c9cd8d254b52a4f7059113c41483597 Mon Sep 17 00:00:00 2001 +From: Miles Alan <m@milesalan.com> +Date: Mon, 17 Aug 2020 20:33:45 -0500 +Subject: [PATCH] Draws a dot indicator overlayed on each tag icon for each + client. The selected client is drawn as a larger horizontal line. + +--- + dwm.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/dwm.c b/dwm.c +index 4465af1..e0ca438 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -695,6 +695,7 @@ dirtomon(int dir) + void + drawbar(Monitor *m) + { ++ int indn; + int x, w, sw = 0; + int boxs = drw->fonts->h / 9; + int boxw = drw->fonts->h / 6 + 2; +@@ -715,13 +716,18 @@ drawbar(Monitor *m) + } + x = 0; + for (i = 0; i < LENGTH(tags); i++) { ++ indn = 0; + 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); ++ ++ for (c = m->clients; c; c = c->next) { ++ if (c->tags & (1 << i)) { ++ drw_rect(drw, x, 1 + (indn * 2), selmon->sel == c ? 6 : 1, 1, 1, urg & 1 << i); ++ indn++; ++ } ++ } ++ + x += w; + } + w = blw = TEXTW(m->ltsymbol); +-- +2.25.4 + diff --git a/dwm.suckless.org/patches/clientindicators/dwm-clientindicators.png b/dwm.suckless.org/patches/clientindicators/dwm-clientindicators.png Binary files differ. diff --git a/dwm.suckless.org/patches/clientindicators/dwm-clientindicatorshidevacant-6.2.diff b/dwm.suckless.org/patches/clientindicators/dwm-clientindicatorshidevacant-6.2.diff @@ -0,0 +1,88 @@ +From 166fe643c650defe3b9b18367969dd1359775e0b Mon Sep 17 00:00:00 2001 +From: Miles Alan <m@milesalan.com> +Date: Mon, 17 Aug 2020 21:46:14 -0500 +Subject: [PATCH] Combination of the clientindicators & hidevacant patches + +The clientindicator patch draws a dot indicator overlayed on each tag icon +for each client. The selected client is drawn as a larger horizontal line. + +The hidevacant patch hides tags which have no clients. +--- + dwm.c | 31 +++++++++++++++++++++++-------- + 1 file changed, 23 insertions(+), 8 deletions(-) + +diff --git a/dwm.c b/dwm.c +index 4465af1..969b129 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -416,7 +416,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; +@@ -431,9 +431,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; +@@ -695,6 +700,7 @@ dirtomon(int dir) + void + drawbar(Monitor *m) + { ++ int indn; + int x, w, sw = 0; + int boxs = drw->fonts->h / 9; + int boxw = drw->fonts->h / 6 + 2; +@@ -709,19 +715,28 @@ 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; ++ ++ indn = 0; + 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); ++ ++ for (c = m->clients; c; c = c->next) { ++ if (c->tags & (1 << i)) { ++ drw_rect(drw, x, 1 + (indn * 2), selmon->sel == c ? 6 : 1, 1, 1, urg & 1 << i); ++ indn++; ++ } ++ } ++ + x += w; + } + w = blw = TEXTW(m->ltsymbol); +-- +2.25.4 + diff --git a/dwm.suckless.org/patches/clientindicators/index.md b/dwm.suckless.org/patches/clientindicators/index.md @@ -0,0 +1,19 @@ +# clientindicators + +This patch draws a dot indicator overlayed on each tag icon for each +client. The selected client is drawn as a larger horizontal line. This +may help the user get a quick overview of how many open clients they have +on which tags. + +The clientindicatorshidevacant version of this patch combines +the functionality of the clientindicators patch with the +[hide vacant tags](/patches/hide_vacant_tags) patch. + +![screenshot](dwm-clientindicators.png) + +## Download +* [dwm-clientindicators-6.2.diff](dwm-clientindicators-6.2.diff) (2020-08-17) +* [dwm-clientindicatorshidevacant-6.2.diff](dwm-clientindicatorshidevacant-6.2.diff) (2020-08-17) + +## Author +- Miles Alan (m@milesalan.com)