summaryrefslogtreecommitdiffhomepage
path: root/patch
diff options
context:
space:
mode:
authorbakkeby <[email protected]>2019-09-15 22:45:22 +0200
committerbakkeby <[email protected]>2019-09-15 22:45:22 +0200
commitf8f67508d811e3ad92f159d5101e2da89e269e37 (patch)
tree59865bc5db00d57f9d0e09bae4625e8b0b8b2dc5 /patch
parent30e0a3b5e42185836bd4cf4d591351dacc6b723c (diff)
downloaddwm-flexipatch-f8f67508d811e3ad92f159d5101e2da89e269e37.tar.gz
dwm-flexipatch-f8f67508d811e3ad92f159d5101e2da89e269e37.zip
Adding xrdb patch
Diffstat (limited to 'patch')
-rw-r--r--patch/include.c4
-rw-r--r--patch/include.h8
-rw-r--r--patch/xrdb.c75
-rw-r--r--patch/xrdb.h21
4 files changed, 108 insertions, 0 deletions
diff --git a/patch/include.c b/patch/include.c
index cc528bc..4597d51 100644
--- a/patch/include.c
+++ b/patch/include.c
@@ -90,6 +90,10 @@
#include "zoomswap.c"
#endif
+#if XRDB_PATCH
+#include "xrdb.c"
+#endif
+
/* Layouts */
#if BSTACK_LAYOUT
diff --git a/patch/include.h b/patch/include.h
index 4957e09..2a6001b 100644
--- a/patch/include.h
+++ b/patch/include.h
@@ -78,10 +78,18 @@
#include "vanitygaps.h"
#endif
+#if WARP_PATCH
+#include "warp.h"
+#endif
+
#if ZOOMSWAP_PATCH
#include "zoomswap.h"
#endif
+#if XRDB_PATCH
+#include "xrdb.h"
+#endif
+
/* Layouts */
#if BSTACK_LAYOUT
diff --git a/patch/xrdb.c b/patch/xrdb.c
new file mode 100644
index 0000000..07c6d96
--- /dev/null
+++ b/patch/xrdb.c
@@ -0,0 +1,75 @@
+void
+loadxrdb()
+{
+ Display *display;
+ char * resm;
+ XrmDatabase xrdb;
+ char *type;
+ XrmValue value;
+
+ display = XOpenDisplay(NULL);
+
+ if (display != NULL) {
+ resm = XResourceManagerString(display);
+
+ if (resm != NULL) {
+ xrdb = XrmGetStringDatabase(resm);
+
+ if (xrdb != NULL) {
+ XRDB_LOAD_COLOR("dwm.normfgcolor", normfgcolor);
+ XRDB_LOAD_COLOR("dwm.normbgcolor", normbgcolor);
+ XRDB_LOAD_COLOR("dwm.normbordercolor", normbordercolor);
+ #if FLOAT_BORDER_COLOR_PATCH
+ XRDB_LOAD_COLOR("dwm.normflcolor", normflcolor);
+ #endif // FLOAT_BORDER_COLOR_PATCH
+
+ XRDB_LOAD_COLOR("dwm.selfgcolor", selfgcolor);
+ XRDB_LOAD_COLOR("dwm.selbgcolor", selbgcolor);
+ XRDB_LOAD_COLOR("dwm.selbordercolor", selbordercolor);
+ #if FLOAT_BORDER_COLOR_PATCH
+ XRDB_LOAD_COLOR("dwm.selflcolor", selflcolor);
+ #endif // FLOAT_BORDER_COLOR_PATCH
+
+ #if AWESOMEBAR_PATCH
+ XRDB_LOAD_COLOR("dwm.hidfgcolor", hidfgcolor);
+ XRDB_LOAD_COLOR("dwm.hidbgcolor", hidbgcolor);
+ XRDB_LOAD_COLOR("dwm.hidbordercolor", hidbordercolor);
+ #if FLOAT_BORDER_COLOR_PATCH
+ XRDB_LOAD_COLOR("dwm.hidflcolor", hidflcolor);
+ #endif // FLOAT_BORDER_COLOR_PATCH
+ #endif // AWESOMEBAR_PATCH
+
+ #if TITLECOLOR_PATCH
+ XRDB_LOAD_COLOR("dwm.titlefgcolor", titlefgcolor);
+ XRDB_LOAD_COLOR("dwm.titlebgcolor", titlebgcolor);
+ XRDB_LOAD_COLOR("dwm.titlebordercolor", titlebordercolor);
+ #if FLOAT_BORDER_COLOR_PATCH
+ XRDB_LOAD_COLOR("dwm.titleflcolor", titleflcolor);
+ #endif // FLOAT_BORDER_COLOR_PATCH
+ #endif // TITLECOLOR_PATCH
+ }
+ }
+ }
+
+ XCloseDisplay(display);
+}
+
+void
+xrdb(const Arg *arg)
+{
+ loadxrdb();
+ int i;
+ for (i = 0; i < LENGTH(colors); i++)
+ scheme[i] = drw_scm_create(drw, colors[i],
+ #if ALPHA_PATCH
+ alphas[i],
+ #endif // ALPHA_PATCH
+ #if FLOAT_BORDER_COLOR_PATCH
+ 4
+ #else
+ 3
+ #endif // FLOAT_BORDER_COLOR_PATCH
+ );
+ focus(NULL);
+ arrange(NULL);
+} \ No newline at end of file
diff --git a/patch/xrdb.h b/patch/xrdb.h
new file mode 100644
index 0000000..304f2e2
--- /dev/null
+++ b/patch/xrdb.h
@@ -0,0 +1,21 @@
+#include <X11/Xresource.h>
+
+#define XRDB_LOAD_COLOR(R,V) if (XrmGetResource(xrdb, R, NULL, &type, &value) == True) { \
+ if (value.addr != NULL && strnlen(value.addr, 8) == 7 && value.addr[0] == '#') { \
+ int i = 1; \
+ for (; i <= 6; i++) { \
+ if (value.addr[i] < 48) break; \
+ if (value.addr[i] > 57 && value.addr[i] < 65) break; \
+ if (value.addr[i] > 70 && value.addr[i] < 97) break; \
+ if (value.addr[i] > 102) break; \
+ } \
+ if (i == 7) { \
+ strncpy(V, value.addr, 7); \
+ V[7] = '\0'; \
+ } \
+ } \
+ }
+
+static void loadxrdb(void);
+static void xrdb(const Arg *arg);
+