dwm-float-border-color-20231008-3a7ea45f.diff (4093B)
1 From 5f6716fa3fb7e28e6592872ce3de32b7aa0965a7 Mon Sep 17 00:00:00 2001 2 From: glpzzz <glpz@daxslab.com> 3 Date: Sun, 8 Oct 2023 16:44:37 -0400 4 Subject: [PATCH] set the custom colored floating border on unfocus too. 5 6 --- 7 config.def.h | 8 ++++---- 8 dwm.c | 24 ++++++++++++++++++++---- 9 2 files changed, 24 insertions(+), 8 deletions(-) 10 11 diff --git a/config.def.h b/config.def.h 12 index 9efa774..ce68d1e 100644 13 --- a/config.def.h 14 +++ b/config.def.h 15 @@ -12,10 +12,10 @@ static const char col_gray2[] = "#444444"; 16 static const char col_gray3[] = "#bbbbbb"; 17 static const char col_gray4[] = "#eeeeee"; 18 static const char col_cyan[] = "#005577"; 19 -static const char *colors[][3] = { 20 - /* fg bg border */ 21 - [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, 22 - [SchemeSel] = { col_gray4, col_cyan, col_cyan }, 23 +static const char *colors[][4] = { 24 + /* fg bg border float */ 25 + [SchemeNorm] = { col_gray3, col_gray1, col_gray2, col_gray2 }, 26 + [SchemeSel] = { col_gray4, col_cyan, col_gray2, col_cyan }, 27 }; 28 29 /* tagging */ 30 diff --git a/dwm.c b/dwm.c 31 index f1d86b2..4182083 100644 32 --- a/dwm.c 33 +++ b/dwm.c 34 @@ -56,6 +56,7 @@ 35 #define HEIGHT(X) ((X)->h + 2 * (X)->bw) 36 #define TAGMASK ((1 << LENGTH(tags)) - 1) 37 #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) 38 +#define ColFloat 3 39 40 /* enums */ 41 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ 42 @@ -801,7 +802,10 @@ focus(Client *c) 43 detachstack(c); 44 attachstack(c); 45 grabbuttons(c, 1); 46 - XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); 47 + if(c->isfloating) 48 + XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColFloat].pixel); 49 + else 50 + XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); 51 setfocus(c); 52 } else { 53 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); 54 @@ -1063,7 +1067,10 @@ manage(Window w, XWindowAttributes *wa) 55 56 wc.border_width = c->bw; 57 XConfigureWindow(dpy, w, CWBorderWidth, &wc); 58 - XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel); 59 + if(c->isfloating) 60 + XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColFloat].pixel); 61 + else 62 + XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel); 63 configure(c); /* propagates border_width, if size doesn't change */ 64 updatewindowtype(c); 65 updatesizehints(c); 66 @@ -1074,6 +1081,8 @@ manage(Window w, XWindowAttributes *wa) 67 c->isfloating = c->oldstate = trans != None || c->isfixed; 68 if (c->isfloating) 69 XRaiseWindow(dpy, c->win); 70 + if(c->isfloating) 71 + XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColFloat].pixel); 72 attach(c); 73 attachstack(c); 74 XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, 75 @@ -1586,7 +1595,7 @@ setup(void) 76 /* init appearance */ 77 scheme = ecalloc(LENGTH(colors), sizeof(Clr *)); 78 for (i = 0; i < LENGTH(colors); i++) 79 - scheme[i] = drw_scm_create(drw, colors[i], 3); 80 + scheme[i] = drw_scm_create(drw, colors[i], 4); 81 /* init bars */ 82 updatebars(); 83 updatestatus(); 84 @@ -1730,6 +1739,10 @@ togglefloating(const Arg *arg) 85 return; 86 selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed; 87 if (selmon->sel->isfloating) 88 + XSetWindowBorder(dpy, selmon->sel->win, scheme[SchemeSel][ColFloat].pixel); 89 + else 90 + XSetWindowBorder(dpy, selmon->sel->win, scheme[SchemeSel][ColBorder].pixel); 91 + if(selmon->sel->isfloating) 92 resize(selmon->sel, selmon->sel->x, selmon->sel->y, 93 selmon->sel->w, selmon->sel->h, 0); 94 arrange(selmon); 95 @@ -1768,7 +1781,10 @@ unfocus(Client *c, int setfocus) 96 if (!c) 97 return; 98 grabbuttons(c, 0); 99 - XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel); 100 + if (c->isfloating) 101 + XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColFloat].pixel); 102 + else 103 + XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel); 104 if (setfocus) { 105 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); 106 XDeleteProperty(dpy, root, netatom[NetActiveWindow]); 107 -- 108 2.39.2 109