Mercurial > nixos
diff config/dwm/dwm.c @ 2:a2c891f7b914
Occasional commit 2
| author | Yasuri <yasuri@charliesmp.net> |
|---|---|
| date | Sat, 03 Oct 2026 18:53:08 -0500 |
| parents | face7f4d84f7 |
| children |
line wrap: on
line diff
--- a/config/dwm/dwm.c Fri Oct 02 18:58:29 2026 -0500 +++ b/config/dwm/dwm.c Sat Oct 03 18:53:08 2026 -0500 @@ -145,6 +145,10 @@ int monitor; } Rule; +typedef struct { + int x, y, w, h; +} DwmLogo; + /* function declarations */ static void applyrules(Client *c); static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact); @@ -245,6 +249,7 @@ static int sw, sh; /* X display screen geometry width, height */ static int bh; /* bar height */ static int lrpad; /* sum of left and right padding for text */ +static int dwmlogowdth = 54; /* dwm logo width */ static int (*xerrorxlib)(Display *, XErrorEvent *); static unsigned int numlockmask = 0; static void (*handler[LASTEvent]) (XEvent *) = { @@ -437,6 +442,7 @@ } if (ev->window == selmon->barwin) { i = x = 0; + x = dwmlogowdth; /* dwm logo width */ do x += TEXTW(tags[i]); while (ev->x >= x && ++i < LENGTH(tags)); @@ -707,6 +713,7 @@ drawbar(Monitor *m) { int x, w, tw = 0; + int stroke = 4, letterHeight = bh - 4; int boxs = drw->fonts->h / 9; int boxw = drw->fonts->h / 6 + 2; unsigned int i, occ = 0, urg = 0; @@ -727,15 +734,36 @@ if (c->isurgent) urg |= c->tags; } - x = 0; + + /* use colored scheme for visibility */ + drw_setscheme(drw, scheme[SchemeNorm]); + + /* draw dark background for logo */ + drw_rect(drw, 0, 0, dwmlogowdth, bh, 1, 1); + + /* draw dwm logo */ + const DwmLogo dwmLogo[] = { + { 0, 9, stroke, letterHeight / 2 }, /* d: left vertical */ + { 0, 15, 35, stroke }, /* d: bottom horizontal */ + { 13, 1, stroke, letterHeight }, /* d: right vertical */ + { 0, 7, 15, stroke }, /* d: top horizontal */ + { 22, 7, stroke, letterHeight / 2 }, /* w: center vertical */ + { 31, 7, stroke, letterHeight / 2 }, /* w: right vertical */ + { 31, 7, 22, stroke }, /* m: top horizontal */ + { 40, 11, stroke, letterHeight / 2 }, /* m: center vertical */ + { 49, 11, stroke, letterHeight / 2 } /* m: right vertical */ + }; + + for (int i = 0; i < LENGTH(dwmLogo); i++) { + drw_rect(drw, dwmLogo[i].x, dwmLogo[i].y, dwmLogo[i].w, dwmLogo[i].h, 1, 0); + } + + /* start drawing tags after logo */ + x = dwmlogowdth; 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); - 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 = TEXTW(m->ltsymbol);
