st-flexipatch

My st-flexipatch configuration
git clone git://git.ethandl.dev/st-flexipatch
Log | Files | Refs | README | LICENSE

commit eed2984b7f34d9cc5b75c4925696a360cc36f26f
parent 8a3cd6e45489d49e13a1c700359446c7d27cbd35
Author: Stein Gunnar Bakkeby <bakkeby@gmail.com>
Date:   Fri,  7 May 2021 09:12:55 +0200

Merge pull request #16 from loiccoyle/reload_xresources

Add XRESOURCES_RELOAD_PATCH
Diffstat:
Mpatch/xresources.c | 30++++++++++++++++++++++++++++--
Mpatch/xresources.h | 7+++++--
Mpatches.def.h | 6++++++
Mx.c | 6++++--
4 files changed, 43 insertions(+), 6 deletions(-)

diff --git a/patch/xresources.c b/patch/xresources.c @@ -34,19 +34,46 @@ resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst) return 0; } +#if XRESOURCES_RELOAD_PATCH +void +config_init(Display *dpy) +{ +#else void config_init(void) { +#endif // XRESOURCES_RELOAD_PATCH char *resm; XrmDatabase db; ResourcePref *p; XrmInitialize(); + #if XRESOURCES_RELOAD_PATCH + resm = XResourceManagerString(dpy); + #else resm = XResourceManagerString(xw.dpy); + #endif // XRESOURCES_RELOAD_PATCH if (!resm) return; db = XrmGetStringDatabase(resm); for (p = resources; p < resources + LEN(resources); p++) resource_load(db, p->name, p->type, p->dst); -} -\ No newline at end of file +} + +#if XRESOURCES_RELOAD_PATCH +void reload_config(int sig){ + /* Recreate a Display object to have up to date Xresources entries */ + Display *dpy; + if (!(dpy = XOpenDisplay(NULL))) + die("Can't open display\n"); + + config_init(dpy); + if (sig != -1) { + /* Called due to a SIGUSR1 */ + xloadcols(); + redraw(); + } + signal(SIGUSR1, reload_config); +} +#endif // XRESOURCES_RELOAD_PATCH diff --git a/patch/xresources.h b/patch/xresources.h @@ -14,4 +14,8 @@ typedef struct { } ResourcePref; int resource_load(XrmDatabase, char *, enum resource_type, void *); -void config_init(void); -\ No newline at end of file +#if XRESOURCES_RELOAD_PATCH +void config_init(Display *dpy); +#else +void config_init(void); +#endif // XRESOURCES_RELOAD_PATCH diff --git a/patches.def.h b/patches.def.h @@ -292,3 +292,9 @@ * https://st.suckless.org/patches/xresources/ */ #define XRESOURCES_PATCH 0 + +/* This patch adds the ability to reload the Xresources config when a SIGUSR1 signal is received + e.g.: killall -USR1 st + Depends on the XRESOURCES_PATCH. + */ +#define XRESOURCES_RELOAD_PATCH 0 diff --git a/x.c b/x.c @@ -2576,12 +2576,14 @@ run: setlocale(LC_CTYPE, ""); XSetLocaleModifiers(""); - #if XRESOURCES_PATCH + #if XRESOURCES_RELOAD_PATCH + reload_config(-1); + #elif XRESOURCES_PATCH if (!(xw.dpy = XOpenDisplay(NULL))) die("Can't open display\n"); config_init(); - #endif // XRESOURCES_PATCH + #endif // XRESOURCES_RELOAD_PATCH cols = MAX(cols, 1); rows = MAX(rows, 1); tnew(cols, rows);