From 93bf92048362f35439a8d7422e23d62095e83516 Mon Sep 17 00:00:00 2001 From: meftimes Date: Tue, 25 Jun 2024 19:51:15 -0400 Subject: [PATCH] add xresources patch --- config.def.h | 61 +++-- drw.c | 2 +- drw.h | 2 +- drw.o | Bin 0 -> 11000 bytes dwm | Bin 0 -> 68448 bytes dwm.c | 72 ++++++ dwm.o | Bin 0 -> 61000 bytes patches/dwm-xresources-20210827-138b405.diff | 240 +++++++++++++++++++ util.o | Bin 0 -> 2224 bytes 9 files changed, 356 insertions(+), 21 deletions(-) create mode 100644 drw.o create mode 100755 dwm create mode 100644 dwm.o create mode 100644 patches/dwm-xresources-20210827-138b405.diff create mode 100644 util.o diff --git a/config.def.h b/config.def.h index 94b47ed..84f35b0 100644 --- a/config.def.h +++ b/config.def.h @@ -1,21 +1,23 @@ /* See LICENSE file for copyright and license details. */ /* appearance */ -static const unsigned int borderpx = 1; /* border pixel of windows */ -static const unsigned int snap = 32; /* snap pixel */ -static const int showbar = 1; /* 0 means no bar */ -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"; -static const char col_cyan[] = "#005577"; -static const char *colors[][3] = { - /* fg bg border */ - [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, - [SchemeSel] = { col_gray4, col_cyan, col_cyan }, +static unsigned int borderpx = 1; /* border pixel of windows */ +static unsigned int snap = 32; /* snap pixel */ +static int showbar = 1; /* 0 means no bar */ +static int topbar = 1; /* 0 means bottom bar */ +static char font[] = "monospace:size=10"; +static char dmenufont[] = "monospace:size=10"; +static const char *fonts[] = { font }; +static char normbgcolor[] = "#222222"; +static char normbordercolor[] = "#444444"; +static char normfgcolor[] = "#bbbbbb"; +static char selfgcolor[] = "#eeeeee"; +static char selbordercolor[] = "#005577"; +static char selbgcolor[] = "#005577"; +static char *colors[][3] = { + /* fg bg border */ + [SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor }, + [SchemeSel] = { selfgcolor, selbgcolor, selbordercolor }, }; /* tagging */ @@ -32,9 +34,9 @@ static const Rule rules[] = { }; /* layout(s) */ -static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ -static const int nmaster = 1; /* number of clients in master area */ -static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ +static float mfact = 0.55; /* factor of master area size [0.05..0.95] */ +static int nmaster = 1; /* number of clients in master area */ +static int resizehints = 1; /* 1 means respect size hints in tiled resizals */ static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */ static const Layout layouts[] = { @@ -57,9 +59,30 @@ 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", normbgcolor, "-nf", normfgcolor, "-sb", selbordercolor, "-sf", selfgcolor, NULL }; static const char *termcmd[] = { "st", NULL }; +/* + * Xresources preferences to load at startup + */ +ResourcePref resources[] = { + { "font", STRING, &font }, + { "dmenufont", STRING, &dmenufont }, + { "normbgcolor", STRING, &normbgcolor }, + { "normbordercolor", STRING, &normbordercolor }, + { "normfgcolor", STRING, &normfgcolor }, + { "selbgcolor", STRING, &selbgcolor }, + { "selbordercolor", STRING, &selbordercolor }, + { "selfgcolor", STRING, &selfgcolor }, + { "borderpx", INTEGER, &borderpx }, + { "snap", INTEGER, &snap }, + { "showbar", INTEGER, &showbar }, + { "topbar", INTEGER, &topbar }, + { "nmaster", INTEGER, &nmaster }, + { "resizehints", INTEGER, &resizehints }, + { "mfact", FLOAT, &mfact }, +}; + static const Key keys[] = { /* modifier key function argument */ { MODKEY, XK_p, spawn, {.v = dmenucmd } }, diff --git a/drw.c b/drw.c index a58a2b4..f8a82f5 100644 --- a/drw.c +++ b/drw.c @@ -195,7 +195,7 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname) /* 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 --git a/drw.h b/drw.h index 6471431..bdbf950 100644 --- a/drw.h +++ b/drw.h @@ -40,7 +40,7 @@ void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned in /* 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 --git a/drw.o b/drw.o new file mode 100644 index 0000000000000000000000000000000000000000..6e37c6a5203a60c6d1452401519e3c9d2046144c GIT binary patch literal 11000 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%0Ap2b5(kOn<0 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 literal 0 HcmV?d00001 diff --git a/dwm.c b/dwm.c index c10b1de..780343f 100644 --- a/dwm.c +++ b/dwm.c @@ -36,6 +36,7 @@ #include #include #include +#include #ifdef XINERAMA #include #endif /* XINERAMA */ @@ -141,6 +142,19 @@ typedef struct { int monitor; } Rule; +/* Xresources preferences */ +enum resource_type { + STRING = 0, + INTEGER = 1, + FLOAT = 2 +}; + +typedef struct { + char *name; + enum resource_type type; + void *dst; +} ResourcePref; + /* function declarations */ static void applyrules(Client *c); static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact); @@ -234,6 +248,8 @@ static int xerror(Display *dpy, XErrorEvent *ee); static int xerrordummy(Display *dpy, XErrorEvent *ee); static int xerrorstart(Display *dpy, XErrorEvent *ee); static void zoom(const Arg *arg); +static void load_xresources(void); +static void resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst); /* variables */ static const char broken[] = "broken"; @@ -2153,6 +2169,60 @@ zoom(const Arg *arg) pop(c); } +void +resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst) +{ + char *sdst = NULL; + int *idst = NULL; + float *fdst = NULL; + + sdst = dst; + idst = dst; + fdst = dst; + + char fullname[256]; + char *type; + XrmValue ret; + + snprintf(fullname, sizeof(fullname), "%s.%s", "dwm", name); + fullname[sizeof(fullname) - 1] = '\0'; + + XrmGetResource(db, fullname, "*", &type, &ret); + if (!(ret.addr == NULL || strncmp("String", type, 64))) + { + switch (rtype) { + case STRING: + strcpy(sdst, ret.addr); + break; + case INTEGER: + *idst = strtoul(ret.addr, NULL, 10); + break; + case FLOAT: + *fdst = strtof(ret.addr, NULL); + break; + } + } +} + +void +load_xresources(void) +{ + Display *display; + char *resm; + XrmDatabase db; + ResourcePref *p; + + display = XOpenDisplay(NULL); + resm = XResourceManagerString(display); + if (!resm) + return; + + db = XrmGetStringDatabase(resm); + for (p = resources; p < resources + LENGTH(resources); p++) + resource_load(db, p->name, p->type, p->dst); + XCloseDisplay(display); +} + int main(int argc, char *argv[]) { @@ -2165,6 +2235,8 @@ main(int argc, char *argv[]) if (!(dpy = XOpenDisplay(NULL))) die("dwm: cannot open display"); checkotherwm(); + XrmInitialize(); + load_xresources(); setup(); #ifdef __OpenBSD__ if (pledge("stdio rpath proc exec", NULL) == -1) diff --git a/dwm.o b/dwm.o new file mode 100644 index 0000000000000000000000000000000000000000..e889feb469e120d3daf1189d37b664e0088675b5 GIT binary patch literal 61000 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 literal 0 HcmV?d00001 diff --git a/patches/dwm-xresources-20210827-138b405.diff b/patches/dwm-xresources-20210827-138b405.diff new file mode 100644 index 0000000..29852a9 --- /dev/null +++ b/patches/dwm-xresources-20210827-138b405.diff @@ -0,0 +1,240 @@ +From f30583c6e2ab5e7de6ef4ebf156076ac0f6e69fc Mon Sep 17 00:00:00 2001 +From: Jack Bird +Date: Fri, 27 Aug 2021 00:53:14 +0100 +Subject: [PATCH] xresources updated for 138b405 + +--- + config.def.h | 61 ++++++++++++++++++++++++++++++-------------- + drw.c | 2 +- + drw.h | 2 +- + dwm.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 116 insertions(+), 21 deletions(-) + +diff --git a/config.def.h b/config.def.h +index a2ac963..87ac198 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -1,21 +1,23 @@ + /* See LICENSE file for copyright and license details. */ + + /* appearance */ +-static const unsigned int borderpx = 1; /* border pixel of windows */ +-static const unsigned int snap = 32; /* snap pixel */ +-static const int showbar = 1; /* 0 means no bar */ +-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"; +-static const char col_cyan[] = "#005577"; +-static const char *colors[][3] = { +- /* fg bg border */ +- [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, +- [SchemeSel] = { col_gray4, col_cyan, col_cyan }, ++static unsigned int borderpx = 1; /* border pixel of windows */ ++static unsigned int snap = 32; /* snap pixel */ ++static int showbar = 1; /* 0 means no bar */ ++static int topbar = 1; /* 0 means bottom bar */ ++static char font[] = "monospace:size=10"; ++static char dmenufont[] = "monospace:size=10"; ++static const char *fonts[] = { font }; ++static char normbgcolor[] = "#222222"; ++static char normbordercolor[] = "#444444"; ++static char normfgcolor[] = "#bbbbbb"; ++static char selfgcolor[] = "#eeeeee"; ++static char selbordercolor[] = "#005577"; ++static char selbgcolor[] = "#005577"; ++static char *colors[][3] = { ++ /* fg bg border */ ++ [SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor }, ++ [SchemeSel] = { selfgcolor, selbgcolor, selbordercolor }, + }; + + /* tagging */ +@@ -32,9 +34,9 @@ static const Rule rules[] = { + }; + + /* layout(s) */ +-static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ +-static const int nmaster = 1; /* number of clients in master area */ +-static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ ++static float mfact = 0.55; /* factor of master area size [0.05..0.95] */ ++static int nmaster = 1; /* number of clients in master area */ ++static int resizehints = 1; /* 1 means respect size hints in tiled resizals */ + static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */ + + static const Layout layouts[] = { +@@ -57,9 +59,30 @@ 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", normbgcolor, "-nf", normfgcolor, "-sb", selbordercolor, "-sf", selfgcolor, NULL }; + static const char *termcmd[] = { "st", NULL }; + ++/* ++ * Xresources preferences to load at startup ++ */ ++ResourcePref resources[] = { ++ { "font", STRING, &font }, ++ { "dmenufont", STRING, &dmenufont }, ++ { "normbgcolor", STRING, &normbgcolor }, ++ { "normbordercolor", STRING, &normbordercolor }, ++ { "normfgcolor", STRING, &normfgcolor }, ++ { "selbgcolor", STRING, &selbgcolor }, ++ { "selbordercolor", STRING, &selbordercolor }, ++ { "selfgcolor", STRING, &selfgcolor }, ++ { "borderpx", INTEGER, &borderpx }, ++ { "snap", INTEGER, &snap }, ++ { "showbar", INTEGER, &showbar }, ++ { "topbar", INTEGER, &topbar }, ++ { "nmaster", INTEGER, &nmaster }, ++ { "resizehints", INTEGER, &resizehints }, ++ { "mfact", FLOAT, &mfact }, ++}; ++ + static Key keys[] = { + /* modifier key function argument */ + { MODKEY, XK_p, spawn, {.v = dmenucmd } }, +diff --git a/drw.c b/drw.c +index 4cdbcbe..8f1059e 100644 +--- a/drw.c ++++ b/drw.c +@@ -208,7 +208,7 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname) + /* 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 --git a/drw.h b/drw.h +index 4bcd5ad..42b04ce 100644 +--- a/drw.h ++++ b/drw.h +@@ -39,7 +39,7 @@ void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned in + + /* 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 --git a/dwm.c b/dwm.c +index 5e4d494..2214b19 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + #ifdef XINERAMA + #include + #endif /* XINERAMA */ +@@ -141,6 +142,19 @@ typedef struct { + int monitor; + } Rule; + ++/* Xresources preferences */ ++enum resource_type { ++ STRING = 0, ++ INTEGER = 1, ++ FLOAT = 2 ++}; ++ ++typedef struct { ++ char *name; ++ enum resource_type type; ++ void *dst; ++} ResourcePref; ++ + /* function declarations */ + static void applyrules(Client *c); + static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact); +@@ -234,6 +248,8 @@ static int xerror(Display *dpy, XErrorEvent *ee); + static int xerrordummy(Display *dpy, XErrorEvent *ee); + static int xerrorstart(Display *dpy, XErrorEvent *ee); + static void zoom(const Arg *arg); ++static void load_xresources(void); ++static void resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst); + + /* variables */ + static const char broken[] = "broken"; +@@ -2127,6 +2143,60 @@ zoom(const Arg *arg) + pop(c); + } + ++void ++resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst) ++{ ++ char *sdst = NULL; ++ int *idst = NULL; ++ float *fdst = NULL; ++ ++ sdst = dst; ++ idst = dst; ++ fdst = dst; ++ ++ char fullname[256]; ++ char *type; ++ XrmValue ret; ++ ++ snprintf(fullname, sizeof(fullname), "%s.%s", "dwm", name); ++ fullname[sizeof(fullname) - 1] = '\0'; ++ ++ XrmGetResource(db, fullname, "*", &type, &ret); ++ if (!(ret.addr == NULL || strncmp("String", type, 64))) ++ { ++ switch (rtype) { ++ case STRING: ++ strcpy(sdst, ret.addr); ++ break; ++ case INTEGER: ++ *idst = strtoul(ret.addr, NULL, 10); ++ break; ++ case FLOAT: ++ *fdst = strtof(ret.addr, NULL); ++ break; ++ } ++ } ++} ++ ++void ++load_xresources(void) ++{ ++ Display *display; ++ char *resm; ++ XrmDatabase db; ++ ResourcePref *p; ++ ++ display = XOpenDisplay(NULL); ++ resm = XResourceManagerString(display); ++ if (!resm) ++ return; ++ ++ db = XrmGetStringDatabase(resm); ++ for (p = resources; p < resources + LENGTH(resources); p++) ++ resource_load(db, p->name, p->type, p->dst); ++ XCloseDisplay(display); ++} ++ + int + main(int argc, char *argv[]) + { +@@ -2139,6 +2209,8 @@ main(int argc, char *argv[]) + if (!(dpy = XOpenDisplay(NULL))) + die("dwm: cannot open display"); + checkotherwm(); ++ XrmInitialize(); ++ load_xresources(); + setup(); + #ifdef __OpenBSD__ + if (pledge("stdio rpath proc exec", NULL) == -1) +-- +2.33.0 + diff --git a/util.o b/util.o new file mode 100644 index 0000000000000000000000000000000000000000..aa3779b8a8359ef45e7e6119d6f763f0e4c68e40 GIT binary patch literal 2224 zcmbtUO=uHQ5T0$TjWtbT?V(Z+E3A@0U6Rm3NmZhac9kHtR@7cJO*S@|KR26_s$j%= z2qDmeM-Lu6D0nF7QE1SESC5|5qfig^ASe~$% zBmox*PQk9nQGoECT{~`>aqz()T-F-f+QaW(5z-o_GO0D@mAKYODq6CUP-c^8U0ZFN zF@Gqb-1LW%O4%QJqSTS@4?R`ZEd5-0X6aYTx~1PJZA-sZKBCTO&Ay{SG&C$2jI_1p zNp#TrthH8^EfyHjTJuUkYbBKMhlCRFAdGrA%);_FG@w2OT62Odb4+V|p@uzHKx?8^ zzu()5RS#~+7`MitB zcqJr9#?^=#k)z@0cz7Zj#TtFMWL$KtNP!-Z+Jy15mzci~F_K|hfpm8cq*_24_4a$# zkUWC;VHW#M`m`_bsON%ji^V2c>=27x^?4ZLu4w;0_|b8T_U?4I8?~zmmxF}{Q4a}x zt2e|B;0iE~sOUS~@FQLDU>98Ng45L9>f@ZOK6!uEIUzRHg%4FTmsiuECa1%Y$>~rr zGrD2Ga<**bie?slBd-@BTdtaEC}XH(fL_a)pxYM%>ylJ$g>$#>z@LsSFBwjEVJ|L@ zzh=0T|4!id3;a(4PBY?lz6dzoEsk#rxXAx0;PeVOe_O!40^Uy-2!;CW#l`tvhSPV^ z;<$`93Gr!hIl&B$^Z9^USt*#QMbxHY>m_a(dOoF^dd&nilQL7FE>#i@EGD$^I!8L zm`gS3A1DgnpZCjSe1ERv7$BQ|?4m3%0{<8C7|-MSJO;SUIi#1}Ko{3#Ej`oEI6?M?VEw*Ms4^roq# jGoNZYXO9qs8F+>qL0GvRg#Q0-`RlCzdpk_qaOVF7i)##a literal 0 HcmV?d00001