[dwm][patches][flycolors] improved the code, added support for alpha - sites - public wiki contents of suckless.org
HTML git clone git://git.suckless.org/sites
DIR Log
DIR Files
DIR Refs
---
DIR commit 1f1cf598ffc8d12995b0ffc6cdda14c9501a0724
DIR parent 70aff1d37314f23e59effbf5cc994184efb1fcdc
HTML Author: faradayawerty <faradayawerty@gmail.com>
Date: Sat, 20 Dec 2025 21:12:40 +0300
[dwm][patches][flycolors] improved the code, added support for alpha
Diffstat:
A dwm.suckless.org/patches/flycolors… | 138 ++++++++++++++++++++++++++++++
M dwm.suckless.org/patches/flycolors… | 165 ++++++++++++++-----------------
M dwm.suckless.org/patches/flycolors… | 5 +++++
3 files changed, 218 insertions(+), 90 deletions(-)
---
DIR diff --git a/dwm.suckless.org/patches/flycolors/dwm-flycolors-6.6-alphapatch.diff b/dwm.suckless.org/patches/flycolors/dwm-flycolors-6.6-alphapatch.diff
@@ -0,0 +1,138 @@
+diff -up dwm-6.6-orig/config.def.h dwm-6.6-flycolors-alphapatch/config.def.h
+--- dwm-6.6-orig/config.def.h 2025-12-18 12:11:49.852471883 +0300
++++ dwm-6.6-flycolors-alphapatch/config.def.h 2025-12-20 20:44:19.876078740 +0300
+@@ -11,11 +11,23 @@ static const char col_gray1[] = "#
+ static const char col_gray2[] = "#444444";
+ static const char col_gray3[] = "#bbbbbb";
+ static const char col_gray4[] = "#eeeeee";
+-static const char col_cyan[] = "#005577";
+-static const char *colors[][3] = {
++static const char default_flycolor[] = "#666666";
++
++static const char *flycolors[] = {
++ "#666666", // gray
++ "#005577", // blue
++ "#117755", // green
++ "#aa7711", // yellow
++ "#771111", // red
++ "#551177", // magenta
++ "#aa1177", // pink
++ NULL // used to count the array size
++};
++
++static const char *colors[][3] = {
+ /* fg bg border */
+ [SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
+- [SchemeSel] = { col_gray4, col_cyan, col_cyan },
++ [SchemeSel] = { col_gray4, default_flycolor, default_flycolor }, // [1] and [2] are changed in cycle_flycolors
+ };
+
+ /* tagging */
+@@ -57,13 +69,24 @@ static const Layout layouts[] = {
+
+ /* commands */
+ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
+-static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
++static const char *dmenucmd[] = {
++ "dmenu_run",
++ "-m", dmenumon,
++ "-fn", dmenufont,
++ "-nb", col_gray1,
++ "-nf", col_gray3,
++ "-sb", default_flycolor, // changed as dmenucmd[10] in cycle_flycolors
++ "-sf", col_gray4,
++ NULL
++};
+ static const char *termcmd[] = { "st", NULL };
+
+ static const Key keys[] = {
+ /* modifier key function argument */
+ { MODKEY, XK_p, spawn, {.v = dmenucmd } },
+ { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
++ { MODKEY, XK_c, cycle_flycolors, { .i = +1 } },
++ { MODKEY|ShiftMask, XK_c, cycle_flycolors, { .i = -1 } },
+ { MODKEY, XK_b, togglebar, {0} },
+ { MODKEY, XK_j, focusstack, {.i = +1 } },
+ { MODKEY, XK_k, focusstack, {.i = -1 } },
+@@ -73,7 +96,7 @@ static const Key keys[] = {
+ { MODKEY, XK_l, setmfact, {.f = +0.05} },
+ { MODKEY, XK_Return, zoom, {0} },
+ { MODKEY, XK_Tab, view, {0} },
+- { MODKEY|ShiftMask, XK_c, killclient, {0} },
++ { MODKEY|ShiftMask, XK_x, killclient, {0} },
+ { MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
+ { MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
+ { MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
+diff -up dwm-6.6-orig/dwm.1 dwm-6.6-flycolors-alphapatch/dwm.1
+--- dwm-6.6-orig/dwm.1 2025-12-18 12:11:49.852471883 +0300
++++ dwm-6.6-flycolors-alphapatch/dwm.1 2025-12-20 19:41:46.605075672 +0300
+@@ -113,9 +113,15 @@ Decrease master area size.
+ .B Mod1\-Return
+ Zooms/cycles focused window to/from master area (tiled layouts only).
+ .TP
+-.B Mod1\-Shift\-c
++.B Mod1\-Shift\-x
+ Close focused window.
+ .TP
++.B Mod1\-c
++Cycle master color.
++.TP
++.B Mod1\-Shift\-c
++Cycle master color back.
++.TP
+ .B Mod1\-Shift\-space
+ Toggle focused window between tiled and floating state.
+ .TP
+diff -up dwm-6.6-orig/dwm.c dwm-6.6-flycolors-alphapatch/dwm.c
+--- dwm-6.6-orig/dwm.c 2025-12-18 12:11:49.852471883 +0300
++++ dwm-6.6-flycolors-alphapatch/dwm.c 2025-12-20 21:00:21.702764717 +0300
+@@ -141,6 +141,8 @@ typedef struct {
+ } Rule;
+
+ /* function declarations */
++static void cycle_flycolors(const Arg *arg);
++static void update_scheme();
+ static void applyrules(Client *c);
+ static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact);
+ static void arrange(Monitor *m);
+@@ -234,6 +236,7 @@ static int xerrorstart(Display *dpy, XEr
+ static void zoom(const Arg *arg);
+
+ /* variables */
++static unsigned int iflycol = 0;
+ static const char broken[] = "broken";
+ static char stext[256];
+ static int screen;
+@@ -2139,6 +2142,32 @@ zoom(const Arg *arg)
+ pop(c);
+ }
+
++void
++update_scheme()
++{
++ Client *c = selmon->sel;
++ unsigned int alphas[] = {borderalpha, baralpha, OPAQUE};
++ for (int i = 0; i < LENGTH(colors); i++)
++ scheme[i] = drw_scm_create(drw, colors[i], alphas, 3);
++ focus(c);
++ drawbars();
++}
++
++void
++cycle_flycolors(const Arg *arg)
++{
++ int flycolors_limit = 256;
++ int i;
++ for(i = 0; flycolors[i] != NULL && i < flycolors_limit; i++)
++ ;
++ iflycol += i + arg->i;
++ iflycol %= i;
++ colors[SchemeSel][1] = flycolors[iflycol];
++ colors[SchemeSel][2] = flycolors[iflycol];
++ update_scheme();
++ dmenucmd[10] = flycolors[iflycol];
++}
++
+ int
+ main(int argc, char *argv[])
+ {
DIR diff --git a/dwm.suckless.org/patches/flycolors/dwm-flycolors-6.6.diff b/dwm.suckless.org/patches/flycolors/dwm-flycolors-6.6.diff
@@ -1,69 +1,60 @@
diff -up dwm-6.6-orig/config.def.h dwm-6.6/config.def.h
--- dwm-6.6-orig/config.def.h 2025-12-18 12:11:49.852471883 +0300
-+++ dwm-6.6/config.def.h 2025-12-18 12:31:53.032438383 +0300
-@@ -7,15 +7,37 @@ static const int showbar = 1;
- static const int topbar = 1; /* 0 means bottom bar */
- static const char *fonts[] = { "monospace:size=10" };
- static const char dmenufont[] = "monospace:size=10";
--static const char col_gray1[] = "#222222";
--static const char col_gray2[] = "#444444";
--static const char col_gray3[] = "#bbbbbb";
--static const char col_gray4[] = "#eeeeee";
++++ dwm-6.6/config.def.h 2025-12-20 20:44:19.876078740 +0300
+@@ -11,11 +11,23 @@ static const char col_gray1[] = "#
+ static const char col_gray2[] = "#444444";
+ static const char col_gray3[] = "#bbbbbb";
+ static const char col_gray4[] = "#eeeeee";
-static const char col_cyan[] = "#005577";
-static const char *colors[][3] = {
++static const char default_flycolor[] = "#666666";
+
-+static char col_gray1[] = "#222222";
-+static char col_gray2[] = "#444444";
-+static char col_gray3[] = "#bbbbbb";
-+static char col_gray4[] = "#eeeeee";
-+
-+#define COLOR_RED "#771111"
-+#define COLOR_GREEN "#117755"
-+#define COLOR_YELLOW "#aa7711"
-+#define COLOR_MAGENTA "#551177"
-+#define COLOR_BLUE "#005577"
-+#define COLOR_GRAY "#666666"
-+#define COLOR_PINK "#aa1177"
-+
-+static char *cols[] = {
-+ COLOR_GRAY,
-+ COLOR_BLUE,
-+ COLOR_GREEN,
-+ COLOR_YELLOW,
-+ COLOR_PINK,
-+ COLOR_MAGENTA,
-+ COLOR_RED,
-+ NULL // used to count the number of colors
++static const char *flycolors[] = {
++ "#666666", // gray
++ "#005577", // blue
++ "#117755", // green
++ "#aa7711", // yellow
++ "#771111", // red
++ "#551177", // magenta
++ "#aa1177", // pink
++ NULL // used to count the array size
+};
+
-+static int current_main_col = 0;
-+
-+static char *colors[][3] = {
++static const char *colors[][3] = {
/* fg bg border */
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
- [SchemeSel] = { col_gray4, col_cyan, col_cyan },
-+ [SchemeSel] = { col_gray4, COLOR_GRAY, COLOR_GRAY },
++ [SchemeSel] = { col_gray4, default_flycolor, default_flycolor }, // [1] and [2] are changed in cycle_flycolors
};
/* tagging */
-@@ -57,13 +79,15 @@ static const Layout layouts[] = {
+@@ -57,13 +69,24 @@ static const Layout layouts[] = {
/* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
-static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
-+static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", COLOR_GRAY, "-sf", col_gray4, NULL };
++static const char *dmenucmd[] = {
++ "dmenu_run",
++ "-m", dmenumon,
++ "-fn", dmenufont,
++ "-nb", col_gray1,
++ "-nf", col_gray3,
++ "-sb", default_flycolor, // changed as dmenucmd[10] in cycle_flycolors
++ "-sf", col_gray4,
++ NULL
++};
static const char *termcmd[] = { "st", NULL };
static const Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
-+ { MODKEY, XK_c, cycle_main_col, { .i = +1 } },
-+ { MODKEY|ShiftMask, XK_c, cycle_main_col, { .i = -1 } },
++ { MODKEY, XK_c, cycle_flycolors, { .i = +1 } },
++ { MODKEY|ShiftMask, XK_c, cycle_flycolors, { .i = -1 } },
{ MODKEY, XK_b, togglebar, {0} },
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
-@@ -73,7 +97,7 @@ static const Key keys[] = {
+@@ -73,7 +96,7 @@ static const Key keys[] = {
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
{ MODKEY, XK_Return, zoom, {0} },
{ MODKEY, XK_Tab, view, {0} },
@@ -72,56 +63,50 @@ diff -up dwm-6.6-orig/config.def.h dwm-6.6/config.def.h
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
-Only in dwm-6.6: config.h
-diff -up dwm-6.6-orig/drw.c dwm-6.6/drw.c
---- dwm-6.6-orig/drw.c 2025-12-18 12:11:49.852471883 +0300
-+++ dwm-6.6/drw.c 2025-12-18 12:22:22.002454267 +0300
-@@ -181,7 +181,7 @@ drw_clr_create(Drw *drw, Clr *dest, cons
- /* Wrapper to create color schemes. The caller has to call free(3) on the
- * returned color scheme when done using it. */
- Clr *
--drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
-+drw_scm_create(Drw *drw, char *clrnames[], size_t clrcount)
- {
- size_t i;
- Clr *ret;
-diff -up dwm-6.6-orig/drw.h dwm-6.6/drw.h
---- dwm-6.6-orig/drw.h 2025-12-18 12:11:49.852471883 +0300
-+++ dwm-6.6/drw.h 2025-12-18 12:22:46.195786922 +0300
-@@ -40,7 +40,7 @@ void drw_font_getexts(Fnt *font, const c
-
- /* Colorscheme abstraction */
- void drw_clr_create(Drw *drw, Clr *dest, const char *clrname);
--Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount);
-+Clr *drw_scm_create(Drw *drw, char *clrnames[], size_t clrcount);
-
- /* Cursor abstraction */
- Cur *drw_cur_create(Drw *drw, int shape);
+diff -up dwm-6.6-orig/dwm.1 dwm-6.6/dwm.1
+--- dwm-6.6-orig/dwm.1 2025-12-18 12:11:49.852471883 +0300
++++ dwm-6.6/dwm.1 2025-12-20 19:41:46.605075672 +0300
+@@ -113,9 +113,15 @@ Decrease master area size.
+ .B Mod1\-Return
+ Zooms/cycles focused window to/from master area (tiled layouts only).
+ .TP
+-.B Mod1\-Shift\-c
++.B Mod1\-Shift\-x
+ Close focused window.
+ .TP
++.B Mod1\-c
++Cycle master color.
++.TP
++.B Mod1\-Shift\-c
++Cycle master color back.
++.TP
+ .B Mod1\-Shift\-space
+ Toggle focused window between tiled and floating state.
+ .TP
diff -up dwm-6.6-orig/dwm.c dwm-6.6/dwm.c
--- dwm-6.6-orig/dwm.c 2025-12-18 12:11:49.852471883 +0300
-+++ dwm-6.6/dwm.c 2025-12-18 12:30:47.889106861 +0300
-@@ -141,6 +141,9 @@ typedef struct {
++++ dwm-6.6/dwm.c 2025-12-20 20:44:23.039412131 +0300
+@@ -141,6 +141,8 @@ typedef struct {
} Rule;
/* function declarations */
-+int col_count();
-+void cycle_main_col();
-+void update_scheme();
++static void cycle_flycolors(const Arg *arg);
++static void update_scheme();
static void applyrules(Client *c);
static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact);
static void arrange(Monitor *m);
-@@ -2139,6 +2142,39 @@ zoom(const Arg *arg)
+@@ -234,6 +236,7 @@ static int xerrorstart(Display *dpy, XEr
+ static void zoom(const Arg *arg);
+
+ /* variables */
++static unsigned int iflycol = 0;
+ static const char broken[] = "broken";
+ static char stext[256];
+ static int screen;
+@@ -2139,6 +2142,31 @@ zoom(const Arg *arg)
pop(c);
}
-+int col_count()
-+{
-+ int i;
-+ for(i = 0; cols[i] != NULL; i++)
-+ ;
-+ return i;
-+}
-+
+void
+update_scheme()
+{
@@ -132,19 +117,19 @@ diff -up dwm-6.6-orig/dwm.c dwm-6.6/dwm.c
+ drawbars();
+}
+
-+void cycle_main_col(const Arg *arg)
++void
++cycle_flycolors(const Arg *arg)
+{
-+ current_main_col += arg->i;
-+ int cols_count = col_count();
-+ if(current_main_col < 0)
-+ current_main_col += cols_count;
-+ if(current_main_col > cols_count)
-+ current_main_col += cols_count;
-+ int i = current_main_col % cols_count;
-+ colors[SchemeSel][1] = cols[i];
-+ colors[SchemeSel][2] = cols[i];
++ int flycolors_limit = 256;
++ int i;
++ for(i = 0; flycolors[i] != NULL && i < flycolors_limit; i++)
++ ;
++ iflycol += i + arg->i;
++ iflycol %= i;
++ colors[SchemeSel][1] = flycolors[iflycol];
++ colors[SchemeSel][2] = flycolors[iflycol];
+ update_scheme();
-+ dmenucmd[10] = cols[i];
++ dmenucmd[10] = flycolors[iflycol];
+}
+
int
DIR diff --git a/dwm.suckless.org/patches/flycolors/index.md b/dwm.suckless.org/patches/flycolors/index.md
@@ -8,6 +8,11 @@ The available colors are gray, blue, green, yellow, purple, magenta, and red.
Download
--------
* [dwm-flycolors-6.6.diff](dwm-flycolors-6.6.diff)
+
+If you'd like to combine [alpha](../alpha/) and the flycolors patch,
+you can apply the following patch on top of dwm-alpha-20250918-74edc27.diff
+
+* [dwm-flycolors-6.6-alphapatch.diff](dwm-flycolors-6.6-alphapatch.diff)
Authors
-------