dwm-noxz

[fork] suckless dwm - personal fork
git clone https://noxz.tech/git/dwm-noxz.git
Log | Files | README | LICENSE

commit: 3a1916f51b16a776f430a4098bb538e89ec9a787
parent: b4b2a5e913a078f3ff89252fd02e0e61ede0e997
author: Chris Noxz <chris@noxz.tech>
date:   Tue, 4 Feb 2020 15:14:29 +0100
Apply patch for floating border color
Mconfig.def.h37++++++++++----------
Mdrw.h2+-
Mdwm.c20++++++++---
3 files changed, 36 insertions(+), 23 deletions(-)
diff --git a/config.def.h b/config.def.h
@@ -1,4 +1,5 @@
 /* See LICENSE file for copyright and license details. */
+#define COL_DEF                     "#000000"
 
 /* appearance */
 static const unsigned int borderpx  = 1;        /* border pixel of windows */
@@ -14,25 +15,25 @@ static const char col_gray4[]       = "#eeeeee";
 static const char col_cyan[]        = "#005577";
 static const char title_bg_dark[]   = "#303030";
 static const char title_bg_light[]  = "#fdfdfd";
-static const int color_ptrs[][3]    = {
-	/*                              fg         bg         border    */
-	[SchemeNorm]                = { -1,        -1,        5 },
-	[SchemeSel]                 = { -1,        -1,        11 },
-	[SchemeTagsNorm]            = { 2,         0,         0 },
-	[SchemeTagsSel]             = { 6,         5,         5 },
-	[SchemeTitleNorm]           = { 6,         -1,        -1 },
-	[SchemeTitleSel]            = { 6,         -1,        -1 },
-	[SchemeStatus]              = { 2,         0,         0 },
+static const int color_ptrs[][4]    = {
+	/*                              fg       bg       border   float   */
+	[SchemeNorm]                = { -1,      -1,      5,       5       },
+	[SchemeSel]                 = { -1,      -1,      11,      9       },
+	[SchemeTagsNorm]            = { 2,       0,       0,       -1      },
+	[SchemeTagsSel]             = { 6,       5,       5,       -1      },
+	[SchemeTitleNorm]           = { 6,       -1,      -1,      -1      },
+	[SchemeTitleSel]            = { 6,       -1,      -1,      -1      },
+	[SchemeStatus]              = { 2,       0,       0,       -1      },
 };
-static char colors[][3][8]          = {
-	/*                              fg         bg         border    */
-	[SchemeNorm]                = { "#000000", "#000000", "#000000" },
-	[SchemeSel]                 = { "#000000", "#000000", "#000000" },
-	[SchemeTagsNorm]            = { "#000000", "#000000", "#000000" },
-	[SchemeTagsSel]             = { "#000000", "#000000", "#000000" },
-	[SchemeTitleNorm]           = { "#000000", "#000000", "#000000" },
-	[SchemeTitleSel]            = { "#000000", "#000000", "#000000" },
-	[SchemeStatus]              = { "#000000", "#000000", "#000000" },
+static char colors[][4][8]          = {
+	/*                              fg       bg       border   float   */
+	[SchemeNorm]                = { COL_DEF, COL_DEF, COL_DEF, COL_DEF },
+	[SchemeSel]                 = { COL_DEF, COL_DEF, COL_DEF, COL_DEF },
+	[SchemeTagsNorm]            = { COL_DEF, COL_DEF, COL_DEF, COL_DEF },
+	[SchemeTagsSel]             = { COL_DEF, COL_DEF, COL_DEF, COL_DEF },
+	[SchemeTitleNorm]           = { COL_DEF, COL_DEF, COL_DEF, COL_DEF },
+	[SchemeTitleSel]            = { COL_DEF, COL_DEF, COL_DEF, COL_DEF },
+	[SchemeStatus]              = { COL_DEF, COL_DEF, COL_DEF, COL_DEF },
 };
 
 /* tagging */
diff --git a/drw.h b/drw.h
@@ -12,7 +12,7 @@ typedef struct Fnt {
 	struct Fnt *next;
 } Fnt;
 
-enum { ColFg, ColBg, ColBorder }; /* Clr scheme index */
+enum { ColFg, ColBg, ColBorder, ColFloat }; /* Clr scheme index */
 typedef XftColor Clr;
 
 typedef struct {
diff --git a/dwm.c b/dwm.c
@@ -797,7 +797,10 @@ focus(Client *c)
 		detachstack(c);
 		attachstack(c);
 		grabbuttons(c, 1);
-		XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
+		if (c->isfloating)
+			XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColFloat].pixel);
+		else
+			XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
 		setfocus(c);
 	} else {
 		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
@@ -1053,7 +1056,10 @@ manage(Window w, XWindowAttributes *wa)
 
 	wc.border_width = c->bw;
 	XConfigureWindow(dpy, w, CWBorderWidth, &wc);
-	XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel);
+	if (c->isfloating)
+		XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColFloat].pixel);
+	else
+		XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel);
 	configure(c); /* propagates border_width, if size doesn't change */
 	updatewindowtype(c);
 	updatesizehints(c);
@@ -1064,6 +1070,8 @@ manage(Window w, XWindowAttributes *wa)
 		c->isfloating = c->oldstate = trans != None || c->isfixed;
 	if (c->isfloating)
 		XRaiseWindow(dpy, c->win);
+	if (c->isfloating)
+		XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColFloat].pixel);
 	attach(c);
 	attachstack(c);
 	XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend,
@@ -1564,7 +1572,7 @@ get_vt_colors(void)
 		fclose(fp);
 	}
 	for (i = 0; i < LENGTH(colors); i++) {
-		for (c = 0; c < 3; c++) {
+		for (c = 0; c < 4; c++) {
 			n = color_ptrs[i][c];
 			if (n > -1 && strlen(colors[i][c]) >= strlen(vtcs[n]))
 				memcpy(colors[i][c], vtcs[n], 7);
@@ -1645,7 +1653,7 @@ setup(void)
 	}
 	scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
 	for (i = 0; i < LENGTH(colors); i++)
-		scheme[i] = drw_scm_create(drw, colors[i], 3);
+		scheme[i] = drw_scm_create(drw, colors[i], 4);
 	/* init bars */
 	updatebars();
 	updatestatus();
@@ -1789,6 +1797,10 @@ togglefloating(const Arg *arg)
 	if (selmon->sel->isfullscreen) /* no support for fullscreen windows */
 		return;
 	selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed;
+	if (selmon->sel->isfloating)
+		XSetWindowBorder(dpy, selmon->sel->win, scheme[SchemeSel][ColFloat].pixel);
+	else
+		XSetWindowBorder(dpy, selmon->sel->win, scheme[SchemeSel][ColBorder].pixel);
 	if (selmon->sel->isfloating)
 		resize(selmon->sel, selmon->sel->x, selmon->sel->y,
 			selmon->sel->w, selmon->sel->h, 0);