dwm

my heavily-patched and customized dwm build
git clone git://git.kocotian.pl/dwm.git
Log | Files | Refs | README | LICENSE

commit e305178e62f2f556e14452209f02d27bf330cafc
parent d8246f3e02e7a799df12fe3fa7aea84534264892
Author: kocotian <kocotian@kocotian.pl>
Date:   Sat,  2 Jan 2021 18:32:42 +0100

modules now clickable - fix for bug that was looong

Diffstat:
Mdwm.c | 20+++++---------------
Apatches/dwm-statuscolors-20181008-b69c870.diff | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 99 insertions(+), 15 deletions(-)

diff --git a/dwm.c b/dwm.c @@ -2818,32 +2818,22 @@ updatesizehints(Client *c) } void -updatestatusorig(void) -{ - if (!gettextprop(root, XA_WM_NAME, rawstext, sizeof(rawstext))) - strcpy(stext, "dwm-"VERSION); - else - copyvalidchars(stext, rawstext); - drawbar(selmon); -} - -void updatestatus(void) { - char qtext[4096]; - if (!gettextprop(root, XA_WM_NAME, qtext, sizeof(qtext))) { + char text[2048]; + if (!gettextprop(root, XA_WM_NAME, rawstext, sizeof(rawstext))) { strcpy(stext, "dwm-"VERSION); estext[0] = '\0'; } else { - copyvalidchars(rawstext, qtext); - char *e = strchr(rawstext, statussep); + copyvalidchars(text, rawstext); + char *e = strchr(text, statussep); if (e) { *e = '\0'; e++; strncpy(estext, e, sizeof(estext) - 1); } else { estext[0] = '\0'; } - strncpy(stext, rawstext, sizeof(stext) - 1); + strncpy(stext, text, sizeof(stext) - 1); } drawbar(selmon); } diff --git a/patches/dwm-statuscolors-20181008-b69c870.diff b/patches/dwm-statuscolors-20181008-b69c870.diff @@ -0,0 +1,94 @@ +From 35418d156fccb922710f6ca80a1f3972ba88b42f Mon Sep 17 00:00:00 2001 +From: Danny O'Brien <danny@spesh.com> +Date: Mon, 8 Oct 2018 19:21:29 -0700 +Subject: [PATCH] Add colors to status message in bar. + +This patch matches the format used by +https://dwm.suckless.org/patches/statuscolors/ -- An \x01 character +switches to the normal foreground/color combo, \x02 switches to the +color combo used for selected tags, \03 is set by default to black on +yellow, \04 is white on red. + +These color settings are defined in the colors array in config.def.h. +More can be added, but don't have more than 32, or you'll start hitting +real ASCII. + +This applies cleanly on mainline dwm from commit 022d076 (Sat Jan 7 +17:21:29 2017 +0100) until at least b69c870 (Sat Jun 2 17:15:42 2018 ++020). + +--- + config.def.h | 13 ++++++++++--- + dwm.c | 18 ++++++++++++++++-- + 2 files changed, 26 insertions(+), 5 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 1c0b587..df92695 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -12,10 +12,17 @@ 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_black[] = "#000000"; ++static const char col_red[] = "#ff0000"; ++static const char col_yellow[] = "#ffff00"; ++static const char col_white[] = "#ffffff"; ++ + static const char *colors[][3] = { +- /* fg bg border */ +- [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, +- [SchemeSel] = { col_gray4, col_cyan, col_cyan }, ++ /* fg bg border */ ++ [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, ++ [SchemeSel] = { col_gray4, col_cyan, col_cyan }, ++ [SchemeWarn] = { col_black, col_yellow, col_red }, ++ [SchemeUrgent]= { col_white, col_red, col_red }, + }; + + /* tagging */ +diff --git a/dwm.c b/dwm.c +index 4465af1..9d9d46f 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -59,7 +59,7 @@ + + /* enums */ + enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ +-enum { SchemeNorm, SchemeSel }; /* color schemes */ ++enum { SchemeNorm, SchemeSel, SchemeWarn, SchemeUrgent }; /* color schemes */ + enum { NetSupported, NetWMName, NetWMState, NetWMCheck, + NetWMFullscreen, NetActiveWindow, NetWMWindowType, + NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ +@@ -699,13 +699,27 @@ drawbar(Monitor *m) + int boxs = drw->fonts->h / 9; + int boxw = drw->fonts->h / 6 + 2; + unsigned int i, occ = 0, urg = 0; ++ char *ts = stext; ++ char *tp = stext; ++ int tx = 0; ++ char ctmp; + Client *c; + + /* 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]); + sw = TEXTW(stext) - lrpad + 2; /* 2px right padding */ +- drw_text(drw, m->ww - sw, 0, sw, bh, 0, stext, 0); ++ while (1) { ++ if ((unsigned int)*ts > LENGTH(colors)) { ts++; continue ; } ++ ctmp = *ts; ++ *ts = '\0'; ++ drw_text(drw, m->ww - sw + tx, 0, sw - tx, bh, 0, tp, 0); ++ tx += TEXTW(tp) -lrpad; ++ if (ctmp == '\0') { break; } ++ drw_setscheme(drw, scheme[(unsigned int)(ctmp-1)]); ++ *ts = ctmp; ++ tp = ++ts; ++ } + } + + for (c = m->clients; c; c = c->next) { +-- +2.19.1 +