From 9d244da5124bf13046a4f9606b616ab1d8244e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20M=C3=BCnnich?= 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. --- config.def.h | 10 +++++----- window.c | 35 +++++++++++++++++------------------ 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/config.def.h b/config.def.h index c7a2389..58e728e 100644 --- a/config.def.h +++ b/config.def.h @@ -14,11 +14,11 @@ static const char * const BAR_FONT = "monospace:size=8"; /* colors: * (see X(7) section "COLOR NAMES" for valid values) */ -static char const * WIN_BG_COLOR = "#555555"; -static char const * WIN_FS_COLOR = "#000000"; -static char const * SEL_COLOR = "#EEEEEE"; -static char const * BAR_BG_COLOR = "#222222"; -static char const * BAR_FG_COLOR = "#EEEEEE"; +static const char * const WIN_BG_COLOR = "#555555"; +static const char * const WIN_FS_COLOR = "#000000"; +static const char * const SEL_COLOR = "#EEEEEE"; +static const char * const BAR_BG_COLOR = "#222222"; +static const char * const BAR_FG_COLOR = "#EEEEEE"; #endif #ifdef _IMAGE_CONFIG 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