mirror of
https://github.com/zoriya/dwm.git
synced 2025-12-05 23:06:19 +00:00
Adding a urgent color scheme
This commit is contained in:
@@ -63,6 +63,7 @@ static char *colors[][3] = {
|
||||
/* fg bg border */
|
||||
[SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor },
|
||||
[SchemeSel] = { selfgcolor, selbgcolor, selbordercolor },
|
||||
[SchemeUrg] = { selfgcolor, selbgcolor, selbordercolor },
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
|
||||
1
config.h
1
config.h
@@ -65,6 +65,7 @@ static char *colors[][3] = {
|
||||
/* fg bg border */
|
||||
[SchemeNorm] = { foreground, background, border },
|
||||
[SchemeSel] = { background, accent, accent },
|
||||
[SchemeUrg] = { background, secondary, secondary },
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
|
||||
12
dwm.c
12
dwm.c
@@ -102,7 +102,7 @@ if (XrmGetResource(xrdb, R, NULL, &type, &value) == True) { \
|
||||
|
||||
/* enums */
|
||||
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
|
||||
enum { SchemeNorm, SchemeSel }; /* color schemes */
|
||||
enum { SchemeNorm, SchemeSel, SchemeUrg }; /* color schemes */
|
||||
enum { NetSupported, NetWMName, NetWMState, NetWMCheck,
|
||||
NetWMFullscreen, NetActiveWindow, NetWMWindowType,
|
||||
NetSystemTray, NetSystemTrayOP, NetSystemTrayOrientation,
|
||||
@@ -1707,7 +1707,7 @@ manage(Window w, XWindowAttributes *wa)
|
||||
|
||||
wc.border_width = c->bw;
|
||||
XConfigureWindow(dpy, w, CWBorderWidth, &wc);
|
||||
XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel);
|
||||
XSetWindowBorder(dpy, w, scheme[c->isurgent ? SchemeUrg : SchemeNorm][ColBorder].pixel);
|
||||
configure(c); /* propagates border_width, if size doesn't change */
|
||||
updatewindowtype(c);
|
||||
updatesizehints(c);
|
||||
@@ -2588,6 +2588,8 @@ seturgent(Client *c, int urg)
|
||||
XWMHints *wmh;
|
||||
|
||||
c->isurgent = urg;
|
||||
if (selmon->sel != c)
|
||||
XSetWindowBorder(dpy, c->win, scheme[c->isurgent ? SchemeUrg : SchemeNorm][ColBorder].pixel);
|
||||
if (!(wmh = XGetWMHints(dpy, c->win)))
|
||||
return;
|
||||
wmh->flags = urg ? (wmh->flags | XUrgencyHint) : (wmh->flags & ~XUrgencyHint);
|
||||
@@ -2839,7 +2841,7 @@ unfocus(Client *c, int setfocus)
|
||||
if (!c)
|
||||
return;
|
||||
grabbuttons(c, 0);
|
||||
XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
|
||||
XSetWindowBorder(dpy, c->win, scheme[c->isurgent ? SchemeUrg : SchemeNorm][ColBorder].pixel);
|
||||
if (setfocus) {
|
||||
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
|
||||
XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
|
||||
@@ -3223,8 +3225,10 @@ updatewmhints(Client *c)
|
||||
if (c == selmon->sel && wmh->flags & XUrgencyHint) {
|
||||
wmh->flags &= ~XUrgencyHint;
|
||||
XSetWMHints(dpy, c->win, wmh);
|
||||
} else
|
||||
} else {
|
||||
c->isurgent = (wmh->flags & XUrgencyHint) ? 1 : 0;
|
||||
XSetWindowBorder(dpy, c->win, scheme[c->isurgent ? SchemeUrg : (c->mon->sel == c ? SchemeSel : SchemeNorm)][ColBorder].pixel);
|
||||
}
|
||||
if (wmh->flags & InputHint)
|
||||
c->neverfocus = !wmh->input;
|
||||
else
|
||||
|
||||
@@ -18,11 +18,11 @@ width_tags(Bar *bar, BarWidthArg *a)
|
||||
int
|
||||
draw_tags(Bar *bar, BarDrawArg *a)
|
||||
{
|
||||
int invert;
|
||||
int w, x = a->x;
|
||||
unsigned int i, occ = 0, urg = 0;
|
||||
Client *c;
|
||||
Monitor *m = bar->mon;
|
||||
int s;
|
||||
|
||||
for (c = m->cl->clients; c; c = c->next) {
|
||||
occ |= c->tags == 255 ? 0 : c->tags;
|
||||
@@ -33,10 +33,15 @@ draw_tags(Bar *bar, BarDrawArg *a)
|
||||
for (i = 0; i < LENGTH(tags); i++) {
|
||||
if (!(occ & 1 << i || m->tagset[m->seltags] & 1 << i))
|
||||
continue;
|
||||
invert = urg & 1 << i;
|
||||
if (m->tagset[m->seltags] & 1 << i)
|
||||
s = SchemeSel;
|
||||
else if (urg & 1 << i)
|
||||
s = SchemeUrg;
|
||||
else
|
||||
s = SchemeNorm;
|
||||
w = TEXTW(tags[i]);
|
||||
drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
|
||||
drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], invert);
|
||||
drw_setscheme(drw, scheme[s]);
|
||||
drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], 0);
|
||||
x += w;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user