summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorProsperousPotato <ProsperousPotato@users.noreply.github.com>2025-07-19 20:35:03 +0100
committerProsperousPotato <ProsperousPotato@users.noreply.github.com>2025-07-19 20:35:03 +0100
commit21758ff091b24bd6eec4fffa6f3f811238313e14 (patch)
tree05c5c44cc206a5ffeb820769333cc2a121d3c6fd
parent0a9fca06478a7381207b0d33242377d34d119e0a (diff)
add seperate floating border colour
-rw-r--r--config.h11
-rw-r--r--dwm.c24
2 files changed, 26 insertions, 9 deletions
diff --git a/config.h b/config.h
index 32582a2..ec04ae0 100644
--- a/config.h
+++ b/config.h
@@ -6,17 +6,18 @@
/* appearance */
static const unsigned int borderpx = 3; /* border pixel of windows */
-static const unsigned int snap = 16; /* snap pixel */
+static const unsigned int snap = 8; /* snap pixel */
static const int swallowfloating = 1; /* 1 means swallow floating windows by default */
static const char col_gray1[] = "#000000";
static const char col_gray2[] = "#000000";
static const char col_gray3[] = "#bbbbbb";
static const char col_gray4[] = "#eeeeee";
+static const char col_float[] = "#191970";
static const char col_cyan[] = "#bbbbbb";
-static const char *colors[][3] = {
- /* fg bg border */
- [SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
- [SchemeSel] = { col_gray1, col_cyan, col_cyan },
+static const char *colors[][4] = {
+ /* fg bg border float */
+ [SchemeNorm] = { col_gray3, col_gray1, col_gray2, col_gray2 },
+ [SchemeSel] = { col_gray1, col_cyan, col_cyan, col_float },
};
/* tagging */
diff --git a/dwm.c b/dwm.c
index 110f76e..cbc235e 100644
--- a/dwm.c
+++ b/dwm.c
@@ -60,6 +60,7 @@
#define WIDTH(X) ((X)->w + 2 * (X)->bw)
#define HEIGHT(X) ((X)->h + 2 * (X)->bw)
#define TAGMASK ((1 << LENGTH(tags)) - 1)
+#define ColFloat 3
/* enums */
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
@@ -771,7 +772,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);
@@ -1037,7 +1041,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);
@@ -1050,6 +1057,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,
@@ -1553,7 +1562,7 @@ setup(void)
/* init appearance */
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);
/* supporting window for NetWMCheck */
wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0);
XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32,
@@ -1697,6 +1706,10 @@ togglefloating(const Arg *arg)
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);
arrange(selmon);
@@ -1742,7 +1755,10 @@ unfocus(Client *c, int setfocus)
if (!c)
return;
grabbuttons(c, 0);
- XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
+ if (c->isfloating)
+ XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColFloat].pixel);
+ else
+ XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
if (setfocus) {
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
XDeleteProperty(dpy, root, netatom[NetActiveWindow]);