dwm-float_border_color2-20160731-56a31dc.diff (3649B)
1 URL: http://dwm.suckless.org/patches/historical/float_border_color 2 float_border_color2 allows you to specify a different border color for floating 3 windows. 4 5 Index: dwm/config.def.h 6 =================================================================== 7 --- dwm/config.def.h.orig 8 +++ dwm/config.def.h 9 @@ -12,10 +12,10 @@ static const char col_gray2[] = "# 10 static const char col_gray3[] = "#bbbbbb"; 11 static const char col_gray4[] = "#eeeeee"; 12 static const char col_cyan[] = "#005577"; 13 -static const char *colors[SchemeLast][3] = { 14 - /* fg bg border */ 15 - [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, 16 - [SchemeSel] = { col_gray4, col_cyan, col_cyan }, 17 +static const char *colors[SchemeLast][4] = { 18 + /* fg bg border float */ 19 + [SchemeNorm] = { col_gray3, col_gray1, col_gray2, col_gray2 }, 20 + [SchemeSel] = { col_gray4, col_cyan, col_gray2, col_cyan }, 21 }; 22 23 /* tagging */ 24 Index: dwm/dwm.c 25 =================================================================== 26 --- dwm/dwm.c.orig 27 +++ dwm/dwm.c 28 @@ -57,6 +57,7 @@ 29 #define TAGMASK ((1 << LENGTH(tags)) - 1) 30 #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) 31 #define ColBorder 2 32 +#define ColFloat 3 33 34 /* enums */ 35 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ 36 @@ -809,7 +810,10 @@ focus(Client *c) 37 detachstack(c); 38 attachstack(c); 39 grabbuttons(c, 1); 40 - XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); 41 + if(c->isfloating) 42 + XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColFloat].pixel); 43 + else 44 + XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); 45 setfocus(c); 46 } else { 47 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); 48 @@ -1068,7 +1072,10 @@ manage(Window w, XWindowAttributes *wa) 49 50 wc.border_width = c->bw; 51 XConfigureWindow(dpy, w, CWBorderWidth, &wc); 52 - XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel); 53 + if(c->isfloating) 54 + XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColFloat].pixel); 55 + else 56 + XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel); 57 configure(c); /* propagates border_width, if size doesn't change */ 58 updatewindowtype(c); 59 updatesizehints(c); 60 @@ -1079,6 +1086,8 @@ manage(Window w, XWindowAttributes *wa) 61 c->isfloating = c->oldstate = trans != None || c->isfixed; 62 if (c->isfloating) 63 XRaiseWindow(dpy, c->win); 64 + if(c->isfloating) 65 + XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColFloat].pixel); 66 attach(c); 67 attachstack(c); 68 XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, 69 @@ -1583,8 +1592,8 @@ setup(void) 70 cursor[CurResize] = drw_cur_create(drw, XC_sizing); 71 cursor[CurMove] = drw_cur_create(drw, XC_fleur); 72 /* init appearance */ 73 - scheme[SchemeNorm] = drw_scm_create(drw, colors[SchemeNorm], 3); 74 - scheme[SchemeSel] = drw_scm_create(drw, colors[SchemeSel], 3); 75 + scheme[SchemeNorm] = drw_scm_create(drw, colors[SchemeNorm], 4); 76 + scheme[SchemeSel] = drw_scm_create(drw, colors[SchemeSel], 4); 77 /* init bars */ 78 updatebars(); 79 updatestatus(); 80 @@ -1706,6 +1715,10 @@ togglefloating(const Arg *arg) 81 return; 82 selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed; 83 if (selmon->sel->isfloating) 84 + XSetWindowBorder(dpy, selmon->sel->win, scheme[SchemeSel][ColFloat].pixel); 85 + else 86 + XSetWindowBorder(dpy, selmon->sel->win, scheme[SchemeSel][ColBorder].pixel); 87 + if(selmon->sel->isfloating) 88 resize(selmon->sel, selmon->sel->x, selmon->sel->y, 89 selmon->sel->w, selmon->sel->h, 0); 90 arrange(selmon);