Adding xrdb patch

This commit is contained in:
bakkeby
2019-09-15 22:45:22 +02:00
parent 30e0a3b5e4
commit f8f67508d8
9 changed files with 200 additions and 32 deletions

View File

@ -90,6 +90,10 @@
#include "zoomswap.c"
#endif
#if XRDB_PATCH
#include "xrdb.c"
#endif
/* Layouts */
#if BSTACK_LAYOUT

View File

@ -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

75
patch/xrdb.c Normal file
View File

@ -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);
}

21
patch/xrdb.h Normal file
View File

@ -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);