|
@@ -885,7 +885,20 @@ drawbar(Monitor *m)
|
|
|
/* 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 */
|
|
|
+ /* calculate text width while ignoring special chars */
|
|
|
+ sw = 0;
|
|
|
+ while (1) {
|
|
|
+ if ((unsigned int)*ts > LENGTH(colors)) { ts++; continue ; }
|
|
|
+ ctmp = *ts;
|
|
|
+ *ts = '\0';
|
|
|
+ sw += TEXTW(tp) -lrpad;
|
|
|
+ if (ctmp == '\0') { break; }
|
|
|
+ *ts = ctmp;
|
|
|
+ tp = ++ts;
|
|
|
+ }
|
|
|
+ ts = stext;
|
|
|
+ tp = stext;
|
|
|
+ /* render text */
|
|
|
while (1) {
|
|
|
if ((unsigned int)*ts > LENGTH(colors)) { ts++; continue ; }
|
|
|
ctmp = *ts;
|