From 0d743eddffe091acaa7d0737f86dd60775b95831 Mon Sep 17 00:00:00 2001 From: bakkeby Date: Thu, 27 Aug 2020 21:37:19 +0200 Subject: [PATCH] flexwintitle: allow flexwintitle to control window borders --- config.def.h | 66 ++++++++++++++++++++-------------------- dwm.c | 8 +++++ patch/bar_flexwintitle.c | 7 +++-- 3 files changed, 45 insertions(+), 36 deletions(-) diff --git a/config.def.h b/config.def.h index 9ed5922..e165d2c 100644 --- a/config.def.h +++ b/config.def.h @@ -226,39 +226,39 @@ static char *colors[][ColCount] = { [SchemeHid] = { hidfgcolor, hidbgcolor, hidbordercolor, hidfloatcolor }, [SchemeUrg] = { urgfgcolor, urgbgcolor, urgbordercolor, urgfloatcolor }, #if BAR_FLEXWINTITLE_PATCH - [SchemeFlexActTTB] = { titleselfgcolor, actTTBbgcolor, c000000, c000000 }, - [SchemeFlexActLTR] = { titleselfgcolor, actLTRbgcolor, c000000, c000000 }, - [SchemeFlexActMONO] = { titleselfgcolor, actMONObgcolor, c000000, c000000 }, - [SchemeFlexActGRID] = { titleselfgcolor, actGRIDbgcolor, c000000, c000000 }, - [SchemeFlexActGRD1] = { titleselfgcolor, actGRD1bgcolor, c000000, c000000 }, - [SchemeFlexActGRD2] = { titleselfgcolor, actGRD2bgcolor, c000000, c000000 }, - [SchemeFlexActGRDM] = { titleselfgcolor, actGRDMbgcolor, c000000, c000000 }, - [SchemeFlexActHGRD] = { titleselfgcolor, actHGRDbgcolor, c000000, c000000 }, - [SchemeFlexActDWDL] = { titleselfgcolor, actDWDLbgcolor, c000000, c000000 }, - [SchemeFlexActSPRL] = { titleselfgcolor, actSPRLbgcolor, c000000, c000000 }, - [SchemeFlexActFloat] = { titleselfgcolor, actfloatbgcolor, c000000, c000000 }, - [SchemeFlexInaTTB] = { titlenormfgcolor, normTTBbgcolor, c000000, c000000 }, - [SchemeFlexInaLTR] = { titlenormfgcolor, normLTRbgcolor, c000000, c000000 }, - [SchemeFlexInaMONO] = { titlenormfgcolor, normMONObgcolor, c000000, c000000 }, - [SchemeFlexInaGRID] = { titlenormfgcolor, normGRIDbgcolor, c000000, c000000 }, - [SchemeFlexInaGRD1] = { titlenormfgcolor, normGRD1bgcolor, c000000, c000000 }, - [SchemeFlexInaGRD2] = { titlenormfgcolor, normGRD2bgcolor, c000000, c000000 }, - [SchemeFlexInaGRDM] = { titlenormfgcolor, normGRDMbgcolor, c000000, c000000 }, - [SchemeFlexInaHGRD] = { titlenormfgcolor, normHGRDbgcolor, c000000, c000000 }, - [SchemeFlexInaDWDL] = { titlenormfgcolor, normDWDLbgcolor, c000000, c000000 }, - [SchemeFlexInaSPRL] = { titlenormfgcolor, normSPRLbgcolor, c000000, c000000 }, - [SchemeFlexInaFloat] = { titlenormfgcolor, normfloatbgcolor, c000000, c000000 }, - [SchemeFlexSelTTB] = { titleselfgcolor, selTTBbgcolor, c000000, c000000 }, - [SchemeFlexSelLTR] = { titleselfgcolor, selLTRbgcolor, c000000, c000000 }, - [SchemeFlexSelMONO] = { titleselfgcolor, selMONObgcolor, c000000, c000000 }, - [SchemeFlexSelGRID] = { titleselfgcolor, selGRIDbgcolor, c000000, c000000 }, - [SchemeFlexSelGRD1] = { titleselfgcolor, selGRD1bgcolor, c000000, c000000 }, - [SchemeFlexSelGRD2] = { titleselfgcolor, selGRD2bgcolor, c000000, c000000 }, - [SchemeFlexSelGRDM] = { titleselfgcolor, selGRDMbgcolor, c000000, c000000 }, - [SchemeFlexSelHGRD] = { titleselfgcolor, selHGRDbgcolor, c000000, c000000 }, - [SchemeFlexSelDWDL] = { titleselfgcolor, selDWDLbgcolor, c000000, c000000 }, - [SchemeFlexSelSPRL] = { titleselfgcolor, selSPRLbgcolor, c000000, c000000 }, - [SchemeFlexSelFloat] = { titleselfgcolor, selfloatbgcolor, c000000, c000000 }, + [SchemeFlexActTTB] = { titleselfgcolor, actTTBbgcolor, actTTBbgcolor, c000000 }, + [SchemeFlexActLTR] = { titleselfgcolor, actLTRbgcolor, actLTRbgcolor, c000000 }, + [SchemeFlexActMONO] = { titleselfgcolor, actMONObgcolor, actMONObgcolor, c000000 }, + [SchemeFlexActGRID] = { titleselfgcolor, actGRIDbgcolor, actGRIDbgcolor, c000000 }, + [SchemeFlexActGRD1] = { titleselfgcolor, actGRD1bgcolor, actGRD1bgcolor, c000000 }, + [SchemeFlexActGRD2] = { titleselfgcolor, actGRD2bgcolor, actGRD2bgcolor, c000000 }, + [SchemeFlexActGRDM] = { titleselfgcolor, actGRDMbgcolor, actGRDMbgcolor, c000000 }, + [SchemeFlexActHGRD] = { titleselfgcolor, actHGRDbgcolor, actHGRDbgcolor, c000000 }, + [SchemeFlexActDWDL] = { titleselfgcolor, actDWDLbgcolor, actDWDLbgcolor, c000000 }, + [SchemeFlexActSPRL] = { titleselfgcolor, actSPRLbgcolor, actSPRLbgcolor, c000000 }, + [SchemeFlexActFloat] = { titleselfgcolor, actfloatbgcolor, actfloatbgcolor, c000000 }, + [SchemeFlexInaTTB] = { titlenormfgcolor, normTTBbgcolor, normTTBbgcolor, c000000 }, + [SchemeFlexInaLTR] = { titlenormfgcolor, normLTRbgcolor, normLTRbgcolor, c000000 }, + [SchemeFlexInaMONO] = { titlenormfgcolor, normMONObgcolor, normMONObgcolor, c000000 }, + [SchemeFlexInaGRID] = { titlenormfgcolor, normGRIDbgcolor, normGRIDbgcolor, c000000 }, + [SchemeFlexInaGRD1] = { titlenormfgcolor, normGRD1bgcolor, normGRD1bgcolor, c000000 }, + [SchemeFlexInaGRD2] = { titlenormfgcolor, normGRD2bgcolor, normGRD2bgcolor, c000000 }, + [SchemeFlexInaGRDM] = { titlenormfgcolor, normGRDMbgcolor, normGRDMbgcolor, c000000 }, + [SchemeFlexInaHGRD] = { titlenormfgcolor, normHGRDbgcolor, normHGRDbgcolor, c000000 }, + [SchemeFlexInaDWDL] = { titlenormfgcolor, normDWDLbgcolor, normDWDLbgcolor, c000000 }, + [SchemeFlexInaSPRL] = { titlenormfgcolor, normSPRLbgcolor, normSPRLbgcolor, c000000 }, + [SchemeFlexInaFloat] = { titlenormfgcolor, normfloatbgcolor, normfloatbgcolor, c000000 }, + [SchemeFlexSelTTB] = { titleselfgcolor, selTTBbgcolor, selTTBbgcolor, c000000 }, + [SchemeFlexSelLTR] = { titleselfgcolor, selLTRbgcolor, selLTRbgcolor, c000000 }, + [SchemeFlexSelMONO] = { titleselfgcolor, selMONObgcolor, selMONObgcolor, c000000 }, + [SchemeFlexSelGRID] = { titleselfgcolor, selGRIDbgcolor, selGRIDbgcolor, c000000 }, + [SchemeFlexSelGRD1] = { titleselfgcolor, selGRD1bgcolor, selGRD1bgcolor, c000000 }, + [SchemeFlexSelGRD2] = { titleselfgcolor, selGRD2bgcolor, selGRD2bgcolor, c000000 }, + [SchemeFlexSelGRDM] = { titleselfgcolor, selGRDMbgcolor, selGRDMbgcolor, c000000 }, + [SchemeFlexSelHGRD] = { titleselfgcolor, selHGRDbgcolor, selHGRDbgcolor, c000000 }, + [SchemeFlexSelDWDL] = { titleselfgcolor, selDWDLbgcolor, selDWDLbgcolor, c000000 }, + [SchemeFlexSelSPRL] = { titleselfgcolor, selSPRLbgcolor, selSPRLbgcolor, c000000 }, + [SchemeFlexSelFloat] = { titleselfgcolor, selfloatbgcolor, selfloatbgcolor, c000000 }, #endif // BAR_FLEXWINTITLE_PATCH }; diff --git a/dwm.c b/dwm.c index 4de4f34..2474160 100644 --- a/dwm.c +++ b/dwm.c @@ -1692,10 +1692,12 @@ focus(Client *c) detachstack(c); attachstack(c); grabbuttons(c, 1); + #if !BAR_FLEXWINTITLE_PATCH if (c->isfloating) XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColFloat].pixel); else XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); + #endif // BAR_FLEXWINTITLE_PATCH setfocus(c); } else { XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); @@ -2063,10 +2065,12 @@ manage(Window w, XWindowAttributes *wa) wc.border_width = c->bw; XConfigureWindow(dpy, w, CWBorderWidth, &wc); + #if !BAR_FLEXWINTITLE_PATCH if (c->isfloating) XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColFloat].pixel); else XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel); + #endif // BAR_FLEXWINTITLE_PATCH configure(c); /* propagates border_width, if size doesn't change */ #if !FLOATPOS_PATCH updatesizehints(c); @@ -3348,10 +3352,12 @@ togglefloating(const Arg *arg) #endif // FAKEFULLSCREEN_CLIENT_PATCH #endif // !FAKEFULLSCREEN_PATCH c->isfloating = !c->isfloating || c->isfixed; + #if !BAR_FLEXWINTITLE_PATCH if (c->isfloating) XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColFloat].pixel); else XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); + #endif // BAR_FLEXWINTITLE_PATCH if (c->isfloating) { #if SAVEFLOATS_PATCH || EXRESIZE_PATCH if (c->sfx != -9999) { @@ -3497,10 +3503,12 @@ unfocus(Client *c, int setfocus) #endif // FAKEFULLSCREEN_CLIENT_PATCH #endif // LOSEFULLSCREEN_PATCH grabbuttons(c, 0); + #if !BAR_FLEXWINTITLE_PATCH if (c->isfloating) XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColFloat].pixel); else XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel); + #endif // BAR_FLEXWINTITLE_PATCH if (setfocus) { XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); XDeleteProperty(dpy, root, netatom[NetActiveWindow]); diff --git a/patch/bar_flexwintitle.c b/patch/bar_flexwintitle.c index 4e2ecc9..216c802 100644 --- a/patch/bar_flexwintitle.c +++ b/patch/bar_flexwintitle.c @@ -171,8 +171,7 @@ flextitledraw(Monitor *m, Client *c, int unused, int x, int w, int tabscheme, Ar if (!c) return; int i, nclienttags = 0, nviewtags = 0, pad = lrpad / 2; - - drw_setscheme(drw, scheme[( + int clientscheme = ( c == m->sel ? getselschemefor(tabscheme) : HIDDEN(c) @@ -180,7 +179,9 @@ flextitledraw(Monitor *m, Client *c, int unused, int x, int w, int tabscheme, Ar : c->isurgent ? SchemeUrg : tabscheme - )]); + ); + drw_setscheme(drw, scheme[clientscheme]); + XSetWindowBorder(dpy, c->win, scheme[clientscheme][ColBorder].pixel); if (w <= TEXTW("A") - lrpad + pad) // reduce text padding if wintitle is too small pad = (w - TEXTW("A") + lrpad < 0 ? 0 : (w - TEXTW("A") + lrpad) / 2); #if BAR_CENTEREDWINDOWNAME_PATCH