Added status2d patch to dwm and fixed issues with systray patch
This commit is contained in:
parent
6635e2207e
commit
90ef5635bb
@ -27,6 +27,11 @@ static const char *colors[][3] = {
|
|||||||
/* fg bg border */
|
/* fg bg border */
|
||||||
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
|
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
|
||||||
[SchemeSel] = { col_gray4, col_teal, col_teal },
|
[SchemeSel] = { col_gray4, col_teal, col_teal },
|
||||||
|
[SchemeStatus] = { col_gray3, col_gray1, "#000000" }, // Statusbar right {text,background,not used but cannot be empty}
|
||||||
|
[SchemeTagsSel] = { col_gray4, col_teal, "#000000" }, // Tagbar left selected {text,background,not used but cannot be empty}
|
||||||
|
[SchemeTagsNorm] = { col_gray3, col_gray1, "#000000" }, // Tagbar left unselected {text,background,not used but cannot be empty}
|
||||||
|
[SchemeInfoSel] = { col_gray3, col_gray1, "#000000" }, // infobar middle selected {text,background,not used but cannot be empty}
|
||||||
|
[SchemeInfoNorm] = { col_gray3, col_gray1, "#000000" }, // infobar middle unselected {text,background,not used but cannot be empty}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* tagging */
|
/* tagging */
|
||||||
@ -52,8 +57,8 @@ static const int resizehints = 1; /* 1 means respect size hints in tiled resi
|
|||||||
|
|
||||||
static const Layout layouts[] = {
|
static const Layout layouts[] = {
|
||||||
/* symbol arrange function */
|
/* symbol arrange function */
|
||||||
{ "[]=", tile }, /* first entry is default */
|
{ "[T]", tile }, /* first entry is default */
|
||||||
{ "><>", NULL }, /* no layout function means floating behavior */
|
{ "[F]", NULL }, /* no layout function means floating behavior */
|
||||||
{ "[M]", monocle },
|
{ "[M]", monocle },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
133
dwm-6.2/dwm.c
133
dwm-6.2/dwm.c
@ -76,7 +76,7 @@
|
|||||||
|
|
||||||
/* enums */
|
/* enums */
|
||||||
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
|
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
|
||||||
enum { SchemeNorm, SchemeSel }; /* color schemes */
|
enum { SchemeNorm, SchemeSel, SchemeStatus, SchemeTagsSel, SchemeTagsNorm, SchemeInfoSel, SchemeInfoNorm }; /* color schemes */
|
||||||
enum { NetSupported, NetWMName, NetWMState, NetWMCheck,
|
enum { NetSupported, NetWMName, NetWMState, NetWMCheck,
|
||||||
NetSystemTray, NetSystemTrayOP, NetSystemTrayOrientation, NetSystemTrayOrientationHorz,
|
NetSystemTray, NetSystemTrayOP, NetSystemTrayOrientation, NetSystemTrayOrientationHorz,
|
||||||
NetWMFullscreen, NetActiveWindow, NetWMWindowType,
|
NetWMFullscreen, NetActiveWindow, NetWMWindowType,
|
||||||
@ -189,6 +189,7 @@ static void detachstack(Client *c);
|
|||||||
static Monitor *dirtomon(int dir);
|
static Monitor *dirtomon(int dir);
|
||||||
static void drawbar(Monitor *m);
|
static void drawbar(Monitor *m);
|
||||||
static void drawbars(void);
|
static void drawbars(void);
|
||||||
|
static int drawstatusbar(Monitor *m, int bh, char* text, int stw);
|
||||||
static void enternotify(XEvent *e);
|
static void enternotify(XEvent *e);
|
||||||
static void expose(XEvent *e);
|
static void expose(XEvent *e);
|
||||||
static void focus(Client *c);
|
static void focus(Client *c);
|
||||||
@ -278,7 +279,7 @@ static const char autostartsh[] = "autostart.sh";
|
|||||||
static const char broken[] = "broken";
|
static const char broken[] = "broken";
|
||||||
static const char dwmdir[] = "dwm";
|
static const char dwmdir[] = "dwm";
|
||||||
static const char localshare[] = ".local/share";
|
static const char localshare[] = ".local/share";
|
||||||
static char stext[256];
|
static char stext[1024];
|
||||||
static int screen;
|
static int screen;
|
||||||
static int sw, sh; /* X display screen geometry width, height */
|
static int sw, sh; /* X display screen geometry width, height */
|
||||||
static int bh, blw = 0; /* bar geometry */
|
static int bh, blw = 0; /* bar geometry */
|
||||||
@ -532,7 +533,7 @@ cleanup(void)
|
|||||||
}
|
}
|
||||||
for (i = 0; i < CurLast; i++)
|
for (i = 0; i < CurLast; i++)
|
||||||
drw_cur_free(drw, cursor[i]);
|
drw_cur_free(drw, cursor[i]);
|
||||||
for (i = 0; i < LENGTH(colors); i++)
|
for (i = 0; i < LENGTH(colors) + 1; i++)
|
||||||
free(scheme[i]);
|
free(scheme[i]);
|
||||||
XDestroyWindow(dpy, wmcheckwin);
|
XDestroyWindow(dpy, wmcheckwin);
|
||||||
drw_free(drw);
|
drw_free(drw);
|
||||||
@ -794,6 +795,114 @@ dirtomon(int dir)
|
|||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
drawstatusbar(Monitor *m, int bh, char* stext, int stw) {
|
||||||
|
int ret, i, w, x, len;
|
||||||
|
short isCode = 0;
|
||||||
|
char *text;
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
len = strlen(stext) + 1 ;
|
||||||
|
if (!(text = (char*) malloc(sizeof(char)*len)))
|
||||||
|
die("malloc");
|
||||||
|
p = text;
|
||||||
|
memcpy(text, stext, len);
|
||||||
|
|
||||||
|
/* compute width of the status text */
|
||||||
|
w = 0;
|
||||||
|
i = -1;
|
||||||
|
while (text[++i]) {
|
||||||
|
if (text[i] == '^') {
|
||||||
|
if (!isCode) {
|
||||||
|
isCode = 1;
|
||||||
|
text[i] = '\0';
|
||||||
|
w += TEXTW(text) - lrpad;
|
||||||
|
text[i] = '^';
|
||||||
|
if (text[++i] == 'f')
|
||||||
|
w += atoi(text + ++i);
|
||||||
|
} else {
|
||||||
|
isCode = 0;
|
||||||
|
text = text + i + 1;
|
||||||
|
i = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isCode)
|
||||||
|
w += TEXTW(text) - lrpad;
|
||||||
|
else
|
||||||
|
isCode = 0;
|
||||||
|
text = p;
|
||||||
|
|
||||||
|
w += 2; /* 1px padding on both sides */
|
||||||
|
ret = x = m->ww - w;
|
||||||
|
|
||||||
|
drw_setscheme(drw, scheme[LENGTH(colors)]);
|
||||||
|
drw->scheme[ColFg] = scheme[SchemeNorm][ColFg];
|
||||||
|
drw->scheme[ColBg] = scheme[SchemeNorm][ColBg];
|
||||||
|
drw_rect(drw, x, 0, w, bh, 1, 1);
|
||||||
|
x++;
|
||||||
|
|
||||||
|
/* process status text */
|
||||||
|
i = -1;
|
||||||
|
while (text[++i]) {
|
||||||
|
if (text[i] == '^' && !isCode) {
|
||||||
|
isCode = 1;
|
||||||
|
|
||||||
|
text[i] = '\0';
|
||||||
|
w = TEXTW(text) - lrpad;
|
||||||
|
drw_text(drw, x - stw, 0, w, bh, 0, text, 0);
|
||||||
|
|
||||||
|
x += w;
|
||||||
|
|
||||||
|
/* process code */
|
||||||
|
while (text[++i] != '^') {
|
||||||
|
if (text[i] == 'c') {
|
||||||
|
char buf[8];
|
||||||
|
memcpy(buf, (char*)text+i+1, 7);
|
||||||
|
buf[7] = '\0';
|
||||||
|
drw_clr_create(drw, &drw->scheme[ColFg], buf);
|
||||||
|
i += 7;
|
||||||
|
} else if (text[i] == 'b') {
|
||||||
|
char buf[8];
|
||||||
|
memcpy(buf, (char*)text+i+1, 7);
|
||||||
|
buf[7] = '\0';
|
||||||
|
drw_clr_create(drw, &drw->scheme[ColBg], buf);
|
||||||
|
i += 7;
|
||||||
|
} else if (text[i] == 'd') {
|
||||||
|
drw->scheme[ColFg] = scheme[SchemeNorm][ColFg];
|
||||||
|
drw->scheme[ColBg] = scheme[SchemeNorm][ColBg];
|
||||||
|
} else if (text[i] == 'r') {
|
||||||
|
int rx = atoi(text + ++i);
|
||||||
|
while (text[++i] != ',');
|
||||||
|
int ry = atoi(text + ++i);
|
||||||
|
while (text[++i] != ',');
|
||||||
|
int rw = atoi(text + ++i);
|
||||||
|
while (text[++i] != ',');
|
||||||
|
int rh = atoi(text + ++i);
|
||||||
|
|
||||||
|
drw_rect(drw, rx + x, ry, rw, rh, 1, 0);
|
||||||
|
} else if (text[i] == 'f') {
|
||||||
|
x += atoi(text + ++i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
text = text + i + 1;
|
||||||
|
i=-1;
|
||||||
|
isCode = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isCode) {
|
||||||
|
w = TEXTW(text) - lrpad;
|
||||||
|
drw_text(drw, x - stw, 0, w, bh, 0, text, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
drw_setscheme(drw, scheme[SchemeNorm]);
|
||||||
|
free(p);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
drawbar(Monitor *m)
|
drawbar(Monitor *m)
|
||||||
{
|
{
|
||||||
@ -808,9 +917,10 @@ drawbar(Monitor *m)
|
|||||||
|
|
||||||
/* draw status first so it can be overdrawn by tags later */
|
/* draw status first so it can be overdrawn by tags later */
|
||||||
if (m == selmon) { /* status is only drawn on selected monitor */
|
if (m == selmon) { /* status is only drawn on selected monitor */
|
||||||
drw_setscheme(drw, scheme[SchemeNorm]);
|
//drw_setscheme(drw, scheme[SchemeNorm]);
|
||||||
sw = TEXTW(stext) - lrpad / 2 + 2; /* 2px right padding */
|
//sw = TEXTW(stext) - lrpad / 2 + 2; /* 2px right padding */
|
||||||
drw_text(drw, m->ww - sw - stw, 0, sw, bh, lrpad / 2 - 2, stext, 0);
|
//drw_text(drw, m->ww - sw - stw, 0, sw, bh, lrpad / 2 - 2, stext, 0);
|
||||||
|
sw = m->ww - drawstatusbar(m, bh, stext, stw);
|
||||||
}
|
}
|
||||||
|
|
||||||
resizebarwin(m);
|
resizebarwin(m);
|
||||||
@ -822,7 +932,7 @@ drawbar(Monitor *m)
|
|||||||
x = 0;
|
x = 0;
|
||||||
for (i = 0; i < LENGTH(tags); i++) {
|
for (i = 0; i < LENGTH(tags); i++) {
|
||||||
w = TEXTW(tags[i]);
|
w = TEXTW(tags[i]);
|
||||||
drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
|
drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeTagsSel : SchemeTagsNorm]);
|
||||||
drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i);
|
drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i);
|
||||||
if (occ & 1 << i)
|
if (occ & 1 << i)
|
||||||
drw_rect(drw, x + boxs, boxs, boxw, boxw,
|
drw_rect(drw, x + boxs, boxs, boxw, boxw,
|
||||||
@ -831,17 +941,17 @@ drawbar(Monitor *m)
|
|||||||
x += w;
|
x += w;
|
||||||
}
|
}
|
||||||
w = blw = TEXTW(m->ltsymbol);
|
w = blw = TEXTW(m->ltsymbol);
|
||||||
drw_setscheme(drw, scheme[SchemeNorm]);
|
drw_setscheme(drw, scheme[SchemeTagsNorm]);
|
||||||
x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0);
|
x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0);
|
||||||
|
|
||||||
if ((w = m->ww - sw - stw - x) > bh) {
|
if ((w = m->ww - sw - stw - x) > bh) {
|
||||||
if (m->sel) {
|
if (m->sel) {
|
||||||
drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
|
drw_setscheme(drw, scheme[m == selmon ? SchemeInfoSel : SchemeInfoNorm]);
|
||||||
drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
|
drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
|
||||||
if (m->sel->isfloating)
|
if (m->sel->isfloating)
|
||||||
drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
|
drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
|
||||||
} else {
|
} else {
|
||||||
drw_setscheme(drw, scheme[SchemeNorm]);
|
drw_setscheme(drw, scheme[SchemeInfoNorm]);
|
||||||
drw_rect(drw, x, 0, w, bh, 1, 1);
|
drw_rect(drw, x, 0, w, bh, 1, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1848,7 +1958,8 @@ setup(void)
|
|||||||
cursor[CurResize] = drw_cur_create(drw, XC_sizing);
|
cursor[CurResize] = drw_cur_create(drw, XC_sizing);
|
||||||
cursor[CurMove] = drw_cur_create(drw, XC_fleur);
|
cursor[CurMove] = drw_cur_create(drw, XC_fleur);
|
||||||
/* init appearance */
|
/* init appearance */
|
||||||
scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
|
scheme = ecalloc(LENGTH(colors) + 1, sizeof(Clr *));
|
||||||
|
scheme[LENGTH(colors)] = drw_scm_create(drw, colors[0], 3);
|
||||||
for (i = 0; i < LENGTH(colors); i++)
|
for (i = 0; i < LENGTH(colors); i++)
|
||||||
scheme[i] = drw_scm_create(drw, colors[i], 3);
|
scheme[i] = drw_scm_create(drw, colors[i], 3);
|
||||||
/* init system tray */
|
/* init system tray */
|
||||||
|
68
dwm-6.2/patches/dwm-colorbar-6.2.diff
Normal file
68
dwm-6.2/patches/dwm-colorbar-6.2.diff
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
diff --git a/config.def.h b/config.def.h
|
||||||
|
index 1c0b587..a516645 100644
|
||||||
|
--- a/config.def.h
|
||||||
|
+++ b/config.def.h
|
||||||
|
@@ -16,6 +16,11 @@ static const char *colors[][3] = {
|
||||||
|
/* fg bg border */
|
||||||
|
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
|
||||||
|
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
|
||||||
|
+ [SchemeStatus] = { col_gray3, col_gray1, "#000000" }, // Statusbar right {text,background,not used but cannot be empty}
|
||||||
|
+ [SchemeTagsSel] = { col_gray4, col_cyan, "#000000" }, // Tagbar left selected {text,background,not used but cannot be empty}
|
||||||
|
+ [SchemeTagsNorm] = { col_gray3, col_gray1, "#000000" }, // Tagbar left unselected {text,background,not used but cannot be empty}
|
||||||
|
+ [SchemeInfoSel] = { col_gray4, col_cyan, "#000000" }, // infobar middle selected {text,background,not used but cannot be empty}
|
||||||
|
+ [SchemeInfoNorm] = { col_gray3, col_gray1, "#000000" }, // infobar middle unselected {text,background,not used but cannot be empty}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* tagging */
|
||||||
|
diff --git a/dwm.c b/dwm.c
|
||||||
|
index 4465af1..0d1d2f7 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, SchemeStatus, SchemeTagsSel, SchemeTagsNorm, SchemeInfoSel, SchemeInfoNorm }; /* color schemes */
|
||||||
|
enum { NetSupported, NetWMName, NetWMState, NetWMCheck,
|
||||||
|
NetWMFullscreen, NetActiveWindow, NetWMWindowType,
|
||||||
|
NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */
|
||||||
|
@@ -703,7 +703,7 @@ 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]);
|
||||||
|
+ drw_setscheme(drw, scheme[SchemeStatus]);
|
||||||
|
sw = TEXTW(stext) - lrpad + 2; /* 2px right padding */
|
||||||
|
drw_text(drw, m->ww - sw, 0, sw, bh, 0, stext, 0);
|
||||||
|
}
|
||||||
|
@@ -716,7 +716,7 @@ drawbar(Monitor *m)
|
||||||
|
x = 0;
|
||||||
|
for (i = 0; i < LENGTH(tags); i++) {
|
||||||
|
w = TEXTW(tags[i]);
|
||||||
|
- drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
|
||||||
|
+ drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeTagsSel : SchemeTagsNorm]);
|
||||||
|
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,
|
||||||
|
@@ -725,17 +725,17 @@ drawbar(Monitor *m)
|
||||||
|
x += w;
|
||||||
|
}
|
||||||
|
w = blw = TEXTW(m->ltsymbol);
|
||||||
|
- drw_setscheme(drw, scheme[SchemeNorm]);
|
||||||
|
+ drw_setscheme(drw, scheme[SchemeTagsNorm]);
|
||||||
|
x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0);
|
||||||
|
|
||||||
|
if ((w = m->ww - sw - x) > bh) {
|
||||||
|
if (m->sel) {
|
||||||
|
- drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
|
||||||
|
+ drw_setscheme(drw, scheme[m == selmon ? SchemeInfoSel : SchemeInfoNorm]);
|
||||||
|
drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
|
||||||
|
if (m->sel->isfloating)
|
||||||
|
drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0);
|
||||||
|
} else {
|
||||||
|
- drw_setscheme(drw, scheme[SchemeNorm]);
|
||||||
|
+ drw_setscheme(drw, scheme[SchemeInfoNorm]);
|
||||||
|
drw_rect(drw, x, 0, w, bh, 1, 1);
|
||||||
|
}
|
||||||
|
}
|
166
dwm-6.2/patches/dwm-status2d-6.2.diff
Normal file
166
dwm-6.2/patches/dwm-status2d-6.2.diff
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
diff --git a/dwm.c b/dwm.c
|
||||||
|
index d27cb67..464c9d6 100644
|
||||||
|
--- a/dwm.c
|
||||||
|
+++ b/dwm.c
|
||||||
|
@@ -163,6 +163,7 @@ static void detach(Client *c);
|
||||||
|
static Monitor *dirtomon(int dir);
|
||||||
|
static void drawbar(Monitor *m);
|
||||||
|
static void drawbars(void);
|
||||||
|
+static int drawstatusbar(Monitor *m, int bh, char* text);
|
||||||
|
static void enternotify(XEvent *e);
|
||||||
|
static void expose(XEvent *e);
|
||||||
|
static void focus(Client *c);
|
||||||
|
@@ -237,7 +238,7 @@ static void zoom(const Arg *arg);
|
||||||
|
|
||||||
|
/* variables */
|
||||||
|
static const char broken[] = "broken";
|
||||||
|
-static char stext[256];
|
||||||
|
+static char stext[1024];
|
||||||
|
static int screen;
|
||||||
|
static int sw, sh; /* X display screen geometry width, height */
|
||||||
|
static int bh, blw = 0; /* bar geometry */
|
||||||
|
@@ -483,7 +484,7 @@ cleanup(void)
|
||||||
|
cleanupmon(mons);
|
||||||
|
for (i = 0; i < CurLast; i++)
|
||||||
|
drw_cur_free(drw, cursor[i]);
|
||||||
|
- for (i = 0; i < LENGTH(colors); i++)
|
||||||
|
+ for (i = 0; i < LENGTH(colors) + 1; i++)
|
||||||
|
free(scheme[i]);
|
||||||
|
XDestroyWindow(dpy, wmcheckwin);
|
||||||
|
drw_free(drw);
|
||||||
|
@@ -690,6 +691,114 @@ dirtomon(int dir)
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int
|
||||||
|
+drawstatusbar(Monitor *m, int bh, char* stext) {
|
||||||
|
+ int ret, i, w, x, len;
|
||||||
|
+ short isCode = 0;
|
||||||
|
+ char *text;
|
||||||
|
+ char *p;
|
||||||
|
+
|
||||||
|
+ len = strlen(stext) + 1 ;
|
||||||
|
+ if (!(text = (char*) malloc(sizeof(char)*len)))
|
||||||
|
+ die("malloc");
|
||||||
|
+ p = text;
|
||||||
|
+ memcpy(text, stext, len);
|
||||||
|
+
|
||||||
|
+ /* compute width of the status text */
|
||||||
|
+ w = 0;
|
||||||
|
+ i = -1;
|
||||||
|
+ while (text[++i]) {
|
||||||
|
+ if (text[i] == '^') {
|
||||||
|
+ if (!isCode) {
|
||||||
|
+ isCode = 1;
|
||||||
|
+ text[i] = '\0';
|
||||||
|
+ w += TEXTW(text) - lrpad;
|
||||||
|
+ text[i] = '^';
|
||||||
|
+ if (text[++i] == 'f')
|
||||||
|
+ w += atoi(text + ++i);
|
||||||
|
+ } else {
|
||||||
|
+ isCode = 0;
|
||||||
|
+ text = text + i + 1;
|
||||||
|
+ i = -1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if (!isCode)
|
||||||
|
+ w += TEXTW(text) - lrpad;
|
||||||
|
+ else
|
||||||
|
+ isCode = 0;
|
||||||
|
+ text = p;
|
||||||
|
+
|
||||||
|
+ w += 2; /* 1px padding on both sides */
|
||||||
|
+ ret = x = m->ww - w;
|
||||||
|
+
|
||||||
|
+ drw_setscheme(drw, scheme[LENGTH(colors)]);
|
||||||
|
+ drw->scheme[ColFg] = scheme[SchemeNorm][ColFg];
|
||||||
|
+ drw->scheme[ColBg] = scheme[SchemeNorm][ColBg];
|
||||||
|
+ drw_rect(drw, x, 0, w, bh, 1, 1);
|
||||||
|
+ x++;
|
||||||
|
+
|
||||||
|
+ /* process status text */
|
||||||
|
+ i = -1;
|
||||||
|
+ while (text[++i]) {
|
||||||
|
+ if (text[i] == '^' && !isCode) {
|
||||||
|
+ isCode = 1;
|
||||||
|
+
|
||||||
|
+ text[i] = '\0';
|
||||||
|
+ w = TEXTW(text) - lrpad;
|
||||||
|
+ drw_text(drw, x, 0, w, bh, 0, text, 0);
|
||||||
|
+
|
||||||
|
+ x += w;
|
||||||
|
+
|
||||||
|
+ /* process code */
|
||||||
|
+ while (text[++i] != '^') {
|
||||||
|
+ if (text[i] == 'c') {
|
||||||
|
+ char buf[8];
|
||||||
|
+ memcpy(buf, (char*)text+i+1, 7);
|
||||||
|
+ buf[7] = '\0';
|
||||||
|
+ drw_clr_create(drw, &drw->scheme[ColFg], buf);
|
||||||
|
+ i += 7;
|
||||||
|
+ } else if (text[i] == 'b') {
|
||||||
|
+ char buf[8];
|
||||||
|
+ memcpy(buf, (char*)text+i+1, 7);
|
||||||
|
+ buf[7] = '\0';
|
||||||
|
+ drw_clr_create(drw, &drw->scheme[ColBg], buf);
|
||||||
|
+ i += 7;
|
||||||
|
+ } else if (text[i] == 'd') {
|
||||||
|
+ drw->scheme[ColFg] = scheme[SchemeNorm][ColFg];
|
||||||
|
+ drw->scheme[ColBg] = scheme[SchemeNorm][ColBg];
|
||||||
|
+ } else if (text[i] == 'r') {
|
||||||
|
+ int rx = atoi(text + ++i);
|
||||||
|
+ while (text[++i] != ',');
|
||||||
|
+ int ry = atoi(text + ++i);
|
||||||
|
+ while (text[++i] != ',');
|
||||||
|
+ int rw = atoi(text + ++i);
|
||||||
|
+ while (text[++i] != ',');
|
||||||
|
+ int rh = atoi(text + ++i);
|
||||||
|
+
|
||||||
|
+ drw_rect(drw, rx + x, ry, rw, rh, 1, 0);
|
||||||
|
+ } else if (text[i] == 'f') {
|
||||||
|
+ x += atoi(text + ++i);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ text = text + i + 1;
|
||||||
|
+ i=-1;
|
||||||
|
+ isCode = 0;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!isCode) {
|
||||||
|
+ w = TEXTW(text) - lrpad;
|
||||||
|
+ drw_text(drw, x, 0, w, bh, 0, text, 0);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ drw_setscheme(drw, scheme[SchemeNorm]);
|
||||||
|
+ free(p);
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void
|
||||||
|
drawbar(Monitor *m)
|
||||||
|
{
|
||||||
|
@@ -701,9 +802,7 @@ 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 */
|
||||||
|
- drw_text(drw, m->ww - sw, 0, sw, bh, 0, stext, 0);
|
||||||
|
+ sw = m->ww - drawstatusbar(m, bh, stext);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (c = m->clients; c; c = c->next) {
|
||||||
|
@@ -1572,7 +1671,8 @@ setup(void)
|
||||||
|
cursor[CurResize] = drw_cur_create(drw, XC_sizing);
|
||||||
|
cursor[CurMove] = drw_cur_create(drw, XC_fleur);
|
||||||
|
/* init appearance */
|
||||||
|
- scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
|
||||||
|
+ scheme = ecalloc(LENGTH(colors) + 1, sizeof(Clr *));
|
||||||
|
+ scheme[LENGTH(colors)] = drw_scm_create(drw, colors[0], 3);
|
||||||
|
for (i = 0; i < LENGTH(colors); i++)
|
||||||
|
scheme[i] = drw_scm_create(drw, colors[i], 3);
|
||||||
|
/* init bars */
|
@ -1,16 +1,16 @@
|
|||||||
//Modify this file to change what commands output to your statusbar, and recompile using the make command.
|
//Modify this file to change what commands output to your statusbar, and recompile using the make command.
|
||||||
static const Block blocks[] = {
|
static const Block blocks[] = {
|
||||||
/*Icon*/ /*Command*/ /*Update Interval*/ /*Update Signal*/
|
/*Icon*/ /*Command*/ /*Update Interval*/ /*Update Signal*/
|
||||||
|
{"", "dwmcpu", 10, 0},
|
||||||
{"", "dwmmemory", 10, 0},
|
{"", "dwmmemory", 10, 0},
|
||||||
{"", "dwmcpu", 5, 0},
|
{"", "dwmnetwork", 30, 0},
|
||||||
{"", "dwmnetwork", 5, 0},
|
|
||||||
{"", "dwmnetspeed", 5, 0},
|
{"", "dwmnetspeed", 5, 0},
|
||||||
{"", "dwmdisk", 600, 0},
|
{"", "dwmdisk", 600, 0},
|
||||||
/* Battery not needed on desktop system */
|
/* Battery not needed on desktop system */
|
||||||
{"", "dwmbattery", 30, 0},
|
//{"", "dwmbattery", 30, 0},
|
||||||
{" ", "date '+%b %d %H:%M'", 5, 0},
|
{"", "dwmdate", 5, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
//sets delimeter between status commands. NULL character ('\0') means no delimeter.
|
//sets delimeter between status commands. NULL character ('\0') means no delimeter.
|
||||||
static char delim[] = " ";
|
static char delim[] = " ";
|
||||||
static unsigned int delimLen = 5;
|
static unsigned int delimLen = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user