Pārlūkot izejas kodu

Add colored status text patch

Frans Bergman 5 gadi atpakaļ
vecāks
revīzija
20b82e1106
3 mainītis faili ar 32 papildinājumiem un 8 dzēšanām
  1. 7 3
      config.def.h
  2. 9 3
      config.h
  3. 16 2
      dwm.c

+ 7 - 3
config.def.h

@@ -18,10 +18,14 @@ static char normfgcolor[]           = "#bbbbbb";
 static char selfgcolor[]            = "#eeeeee";
 static char selbordercolor[]        = "#005577";
 static char selbgcolor[]            = "#005577";
+static char col_yellow[]            = "#FFFF00";
+static char col_red[]               = "#FF0000";
 static char *colors[][3] = {
-       /*               fg           bg           border   */
-       [SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor },
-       [SchemeSel]  = { selfgcolor,  selbgcolor,  selbordercolor  },
+       /*                 fg           bg           border   */
+       [SchemeNorm] =   { normfgcolor, normbgcolor, normbordercolor },
+       [SchemeSel]  =   { selfgcolor,  selbgcolor,  selbordercolor  },
+       [SchemeWarn] =   { col_yellow, normbgcolor, normbordercolor  },
+       [SchemeUrgent] = { col_red, normbgcolor, normbordercolor },
 };
 static const unsigned int baralpha = 0xd0;
 static const unsigned int borderalpha = OPAQUE;

+ 9 - 3
config.h

@@ -18,10 +18,14 @@ static char normfgcolor[]           = "#bbbbbb";
 static char selfgcolor[]            = "#eeeeee";
 static char selbordercolor[]        = "#005577";
 static char selbgcolor[]            = "#005577";
+static char col_yellow[]            = "#FFFF00";
+static char col_red[]               = "#FF0000";
 static char *colors[][3] = {
-       /*               fg           bg           border   */
-       [SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor },
-       [SchemeSel]  = { selfgcolor,  selbgcolor,  selbordercolor  },
+       /*                 fg           bg           border   */
+       [SchemeNorm] =   { normfgcolor, normbgcolor, normbordercolor },
+       [SchemeSel]  =   { selfgcolor,  selbgcolor,  selbordercolor  },
+       [SchemeWarn] =   { col_yellow, normbgcolor, normbordercolor  },
+       [SchemeUrgent] = { col_red, normbgcolor, normbordercolor },
 };
 static const unsigned int baralpha = 0xcc;
 static const unsigned int borderalpha = 0xcc;
@@ -29,6 +33,8 @@ static const unsigned int alphas[][3]      = {
 	/*               fg      bg        border     */
 	[SchemeNorm] = { OPAQUE, baralpha, borderalpha },
 	[SchemeSel]  = { OPAQUE, baralpha, borderalpha },
+	[SchemeWarn] = { OPAQUE, baralpha, borderalpha },
+	[SchemeUrgent]={ OPAQUE, baralpha, borderalpha },
 };
 
 /* tagging */

+ 16 - 2
dwm.c

@@ -77,7 +77,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 */
@@ -792,13 +792,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) {