mirror of
https://github.com/alrayyes/dwm
synced 2023-11-14 15:56:31 +00:00
84 lines
3.0 KiB
Diff
84 lines
3.0 KiB
Diff
|
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).
|
||
|
|
||
|
---
|
||
|
|
||
|
diff --git a/config.def.h b/config.def.h
|
||
|
@@ -16,10 +16,17 @@ static const char col_gray2[] = "#
|
||
|
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
|
||
|
@@ -76,7 +76,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,
|
||
|
NetSystemTray, NetSystemTrayOP, NetSystemTrayOrientation, NetSystemTrayOrientationHorz,
|
||
|
NetWMFullscreen, NetActiveWindow, NetWMWindowType,
|
||
|
@@ -826,6 +826,10 @@ 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;
|
||
|
|
||
|
if(showsystray && m == systraytomon(m))
|
||
|
@@ -835,7 +839,17 @@ drawbar(Monitor *m)
|
||
|
if (m == selmon) { /* status is only drawn on selected monitor */
|
||
|
drw_setscheme(drw, scheme[SchemeNorm]);
|
||
|
sw = TEXTW(stext) - lrpad / 2 + 2; /* 2px right padding */
|
||
|
- drw_text(drw, m->ww - sw - stw, 0, sw, bh, lrpad / 2 - 2, 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;
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
resizebarwin(m);
|