From 9d244da5124bf13046a4f9606b616ab1d8244e0e Mon Sep 17 00:00:00 2001 From: Bert Münnich Date: Wed, 23 Jan 2019 20:13:25 +0100 Subject: Simplify X resource retrieval Also makes the color names in config.def.h constant again. --- window.c | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'window.c') diff --git a/window.c b/window.c index 7d85c63..0503681 100644 --- a/window.c +++ b/window.c @@ -102,7 +102,7 @@ void win_check_wm_support(Display *dpy, Window root) } } -void win_res(Display *dpy, const char *name, const char **dst) +const char* win_res(Display *dpy, const char *name, const char *def) { char *type; XrmValue ret; @@ -111,14 +111,14 @@ void win_res(Display *dpy, const char *name, const char **dst) XrmInitialize(); - if ((res_man = XResourceManagerString(dpy)) == NULL) - return; - - if ((db = XrmGetStringDatabase(res_man)) == NULL) - return; - - if (XrmGetResource(db, name, name, &type, &ret) && STREQ(type, "String")) - *dst = ret.addr; + if ((res_man = XResourceManagerString(dpy)) != NULL && + (db = XrmGetStringDatabase(res_man)) != NULL && + XrmGetResource(db, name, name, &type, &ret) && STREQ(type, "String")) + { + return ret.addr; + } else { + return def; + } } #define INIT_ATOM_(atom) \ @@ -144,18 +144,17 @@ void win_init(win_t *win) if (setlocale(LC_CTYPE, "") == NULL || XSupportsLocale() == 0) error(0, 0, "No locale support"); - win_res(e->dpy, RES_CLASS ".background", &WIN_BG_COLOR); - win_res(e->dpy, RES_CLASS ".background", &BAR_FG_COLOR); - win_res(e->dpy, RES_CLASS ".foreground", &BAR_BG_COLOR); - win_res(e->dpy, RES_CLASS ".foreground", &SEL_COLOR); - win_init_font(e, BAR_FONT); - win_alloc_color(e, WIN_BG_COLOR, &win->bgcol); + win_alloc_color(e, win_res(e->dpy, RES_CLASS ".background", WIN_BG_COLOR), + &win->bgcol); win_alloc_color(e, WIN_FS_COLOR, &win->fscol); - win_alloc_color(e, SEL_COLOR, &win->selcol); - win_alloc_color(e, BAR_BG_COLOR, &win->bar.bgcol); - win_alloc_color(e, BAR_FG_COLOR, &win->bar.fgcol); + win_alloc_color(e, win_res(e->dpy, RES_CLASS ".foreground", SEL_COLOR), + &win->selcol); + win_alloc_color(e, win_res(e->dpy, RES_CLASS ".foreground", BAR_BG_COLOR), + &win->bar.bgcol); + win_alloc_color(e, win_res(e->dpy, RES_CLASS ".background", BAR_FG_COLOR), + &win->bar.fgcol); win->bar.l.size = BAR_L_LEN; win->bar.r.size = BAR_R_LEN; -- cgit v1.2.3-54-g00ecf