mirror of
https://github.com/mintycube/dwm.git
synced 2024-10-22 14:05:45 +02:00
Extrabar compatibility improvements
This commit is contained in:
parent
5478f99c3b
commit
ab488abc11
@ -15,6 +15,8 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
|
|||||||
|
|
||||||
### Changelog:
|
### Changelog:
|
||||||
|
|
||||||
|
2020-07-05 - Extrabar compatibility improvements (staticstatus, statu2d, dwmblocks) and fix for systray randomly causing dwm to crash when first systray application starts
|
||||||
|
|
||||||
2020-06-24 - Added resizepoint, statusbutton and sendmon_keepfocus patches
|
2020-06-24 - Added resizepoint, statusbutton and sendmon_keepfocus patches
|
||||||
|
|
||||||
2020-06-21 - Added floatpos and bar_height patches
|
2020-06-21 - Added floatpos and bar_height patches
|
||||||
|
98
dwm.c
98
dwm.c
@ -291,7 +291,10 @@ struct Monitor {
|
|||||||
int by; /* bar geometry */
|
int by; /* bar geometry */
|
||||||
int tw; /* bar text width */
|
int tw; /* bar text width */
|
||||||
#if EXTRABAR_PATCH
|
#if EXTRABAR_PATCH
|
||||||
int eby; /* extra bar geometry */
|
int eby; /* extra bar geometry */
|
||||||
|
#if STATUSCMD_PATCH
|
||||||
|
int etw; /* extra bar text width */
|
||||||
|
#endif // STATUSCMD_PATCH
|
||||||
#endif // EXTRABAR_PATCH
|
#endif // EXTRABAR_PATCH
|
||||||
#if AWESOMEBAR_PATCH
|
#if AWESOMEBAR_PATCH
|
||||||
int btw; /* width of tasks portion of bar */
|
int btw; /* width of tasks portion of bar */
|
||||||
@ -520,13 +523,24 @@ static char stext[1024];
|
|||||||
#else
|
#else
|
||||||
static char stext[256];
|
static char stext[256];
|
||||||
#endif // STATUS2D_PATCH
|
#endif // STATUS2D_PATCH
|
||||||
|
#if STATUS2D_PATCH
|
||||||
|
static char rawstext[1024];
|
||||||
|
#else
|
||||||
|
static char rawstext[512];
|
||||||
|
#endif // STATUS2D_PATCH
|
||||||
#if EXTRABAR_PATCH
|
#if EXTRABAR_PATCH
|
||||||
#if STATUS2D_PATCH && !STATUSCOLORS_PATCH
|
#if STATUS2D_PATCH && !STATUSCOLORS_PATCH
|
||||||
static char estext[1024];
|
static char estext[1024];
|
||||||
#else
|
#else
|
||||||
static char estext[256];
|
static char estext[256];
|
||||||
#endif // STATUS2D_PATCH
|
#endif // STATUS2D_PATCH
|
||||||
|
#if STATUSCMD_PATCH
|
||||||
|
static char rawestext[1024];
|
||||||
|
#else
|
||||||
|
static char rawestext[512];
|
||||||
|
#endif // STATUSCMD_PATCH
|
||||||
#endif // EXTRABAR_PATCH
|
#endif // EXTRABAR_PATCH
|
||||||
|
|
||||||
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 */
|
||||||
@ -993,6 +1007,60 @@ buttonpress(XEvent *e)
|
|||||||
#if LEFTLAYOUT_PATCH || STATUSBUTTON_PATCH
|
#if LEFTLAYOUT_PATCH || STATUSBUTTON_PATCH
|
||||||
}
|
}
|
||||||
#endif // LEFTLAYOUT_PATCH | STATUSBUTTON_PATCH
|
#endif // LEFTLAYOUT_PATCH | STATUSBUTTON_PATCH
|
||||||
|
#if EXTRABAR_PATCH && STATUSCMD_PATCH
|
||||||
|
} else if (ev->window == selmon->extrabarwin) {
|
||||||
|
i = x = 0;
|
||||||
|
padding = 0;
|
||||||
|
#if BARPADDING_PATCH
|
||||||
|
padding -= sp * 2;
|
||||||
|
#endif // BARPADDING_PATCH
|
||||||
|
if (ev->x > selmon->ww - selmon->etw + padding)
|
||||||
|
{
|
||||||
|
click = ClkStatusText;
|
||||||
|
xc = selmon->ww - selmon->etw + padding;
|
||||||
|
#if STATUSPADDING_PATCH
|
||||||
|
xc += lrpad / 2;
|
||||||
|
#endif // STATUSPADDING_PATCH
|
||||||
|
char *text = rawestext;
|
||||||
|
int i = -1;
|
||||||
|
char ch;
|
||||||
|
#if DWMBLOCKS_PATCH
|
||||||
|
dwmblockssig = -1;
|
||||||
|
#else
|
||||||
|
statuscmdn = 0;
|
||||||
|
#endif // DWMBLOCKS_PATCH
|
||||||
|
while (text[++i]) {
|
||||||
|
if ((unsigned char)text[i] < ' ') {
|
||||||
|
ch = text[i];
|
||||||
|
text[i] = '\0';
|
||||||
|
#if STATUS2D_PATCH && !STATUSCOLORS_PATCH
|
||||||
|
xc += status2dtextlength(text);
|
||||||
|
#elif PANGO_PATCH
|
||||||
|
xc += TEXTWM(text) - lrpad;
|
||||||
|
#else
|
||||||
|
xc += TEXTW(text) - lrpad;
|
||||||
|
#endif // STATUS2D_PATCH
|
||||||
|
text[i] = ch;
|
||||||
|
text += i+1;
|
||||||
|
i = -1;
|
||||||
|
#if DWMBLOCKS_PATCH
|
||||||
|
if (xc >= ev->x && dwmblockssig != -1)
|
||||||
|
break;
|
||||||
|
dwmblockssig = ch;
|
||||||
|
#else
|
||||||
|
if (xc >= ev->x)
|
||||||
|
break;
|
||||||
|
if (ch <= LENGTH(statuscmds))
|
||||||
|
statuscmdn = ch - 1;
|
||||||
|
#endif // DWMBLOCKS_PATCH
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#if DWMBLOCKS_PATCH
|
||||||
|
if (dwmblockssig == -1)
|
||||||
|
dwmblockssig = 0;
|
||||||
|
#endif // DWMBLOCKS_PATCH
|
||||||
|
}
|
||||||
|
#endif // EXTRABAR_PATCH
|
||||||
} else if ((c = wintoclient(ev->window))) {
|
} else if ((c = wintoclient(ev->window))) {
|
||||||
#if FOCUSONCLICK_PATCH
|
#if FOCUSONCLICK_PATCH
|
||||||
if (focusonwheel || (ev->button != Button4 && ev->button != Button5))
|
if (focusonwheel || (ev->button != Button4 && ev->button != Button5))
|
||||||
@ -1926,12 +1994,20 @@ drawbar(Monitor *m)
|
|||||||
if (m == selmon)
|
if (m == selmon)
|
||||||
#endif // STATICSTATUS_PATCH
|
#endif // STATICSTATUS_PATCH
|
||||||
{ /* extra status is only drawn on selected monitor */
|
{ /* extra status is only drawn on selected monitor */
|
||||||
#if STATUS2D_PATCH
|
#if STATUSCMD_PATCH && STATUS2D_PATCH
|
||||||
|
m->etw = m->ww - drawstatusbar(m, bh, estext, 0, 0);
|
||||||
|
#elif STATUS2D_PATCH
|
||||||
drawstatusbar(m, bh, estext, 0, 0);
|
drawstatusbar(m, bh, estext, 0, 0);
|
||||||
#elif PANGO_PATCH
|
#elif PANGO_PATCH
|
||||||
drw_text(drw, 0, 0, mons->ww, bh, 0, estext, 0, True);
|
drw_text(drw, 0, 0, mons->ww, bh, 0, estext, 0, True);
|
||||||
|
#if STATUSCMD_PATCH
|
||||||
|
m->etw = TEXTWM(estext) - lrpad;
|
||||||
|
#endif // STATUSCMD_PATCH
|
||||||
#else
|
#else
|
||||||
drw_text(drw, 0, 0, mons->ww, bh, 0, estext, 0);
|
drw_text(drw, 0, 0, mons->ww, bh, 0, estext, 0);
|
||||||
|
#if STATUSCMD_PATCH
|
||||||
|
m->etw = TEXTW(estext) - lrpad;
|
||||||
|
#endif // STATUSCMD_PATCH
|
||||||
#endif // PANGO_PATCH
|
#endif // PANGO_PATCH
|
||||||
drw_map(drw, m->extrabarwin, 0, 0, m->ww, bh);
|
drw_map(drw, m->extrabarwin, 0, 0, m->ww, bh);
|
||||||
}
|
}
|
||||||
@ -4180,26 +4256,26 @@ updatestatus(void)
|
|||||||
Monitor* m;
|
Monitor* m;
|
||||||
#endif // STATUSALLMONS_PATCH
|
#endif // STATUSALLMONS_PATCH
|
||||||
#if EXTRABAR_PATCH
|
#if EXTRABAR_PATCH
|
||||||
#if STATUS2D_PATCH
|
if (!gettextprop(root, XA_WM_NAME, rawstext, sizeof(rawstext))) {
|
||||||
char text[1024];
|
|
||||||
#else
|
|
||||||
char text[512];
|
|
||||||
#endif // STATUS2D_PATCH
|
|
||||||
if (!gettextprop(root, XA_WM_NAME, text, sizeof(text))) {
|
|
||||||
strcpy(stext, "dwm-"VERSION);
|
strcpy(stext, "dwm-"VERSION);
|
||||||
estext[0] = '\0';
|
estext[0] = '\0';
|
||||||
} else {
|
} else {
|
||||||
char *e = strchr(text, statussep);
|
char *e = strchr(rawstext, statussep);
|
||||||
if (e) {
|
if (e) {
|
||||||
*e = '\0'; e++;
|
*e = '\0'; e++;
|
||||||
|
#if STATUSCMD_PATCH
|
||||||
|
strncpy(rawestext, e, sizeof(estext) - 1);
|
||||||
|
copyvalidchars(estext, rawestext);
|
||||||
|
#else
|
||||||
strncpy(estext, e, sizeof(estext) - 1);
|
strncpy(estext, e, sizeof(estext) - 1);
|
||||||
|
#endif // STATUSCMD_PATCH
|
||||||
} else {
|
} else {
|
||||||
estext[0] = '\0';
|
estext[0] = '\0';
|
||||||
}
|
}
|
||||||
#if STATUSCMD_PATCH
|
#if STATUSCMD_PATCH
|
||||||
copyvalidchars(stext, text);
|
copyvalidchars(stext, rawstext);
|
||||||
#else
|
#else
|
||||||
strncpy(stext, text, sizeof(stext) - 1);
|
strncpy(stext, rawstext, sizeof(stext) - 1);
|
||||||
#endif // STATUSCMD_PATCH
|
#endif // STATUSCMD_PATCH
|
||||||
}
|
}
|
||||||
#elif STATUSCMD_PATCH
|
#elif STATUSCMD_PATCH
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
#if STATUS2D_PATCH
|
|
||||||
static char rawstext[1024];
|
|
||||||
#else
|
|
||||||
static char rawstext[256];
|
|
||||||
#endif // STATUS2D_PATCH
|
|
||||||
#if !DWMBLOCKS_PATCH
|
#if !DWMBLOCKS_PATCH
|
||||||
static const char statusexport[] = "export BUTTON=-;";
|
static const char statusexport[] = "export BUTTON=-;";
|
||||||
static int statuscmdn;
|
static int statuscmdn;
|
||||||
|
Loading…
Reference in New Issue
Block a user