Add Xresources capability
This commit is contained in:
parent
b83d4fa1bf
commit
4853e17b83
10
config.def.h
10
config.def.h
|
@ -14,11 +14,11 @@ static const char * const BAR_FONT = "monospace:size=8";
|
||||||
/* colors:
|
/* colors:
|
||||||
* (see X(7) section "COLOR NAMES" for valid values)
|
* (see X(7) section "COLOR NAMES" for valid values)
|
||||||
*/
|
*/
|
||||||
static const char * const WIN_BG_COLOR = "#555555";
|
static char const * WIN_BG_COLOR = "#555555";
|
||||||
static const char * const WIN_FS_COLOR = "#000000";
|
static char const * WIN_FS_COLOR = "#000000";
|
||||||
static const char * const SEL_COLOR = "#EEEEEE";
|
static char const * SEL_COLOR = "#EEEEEE";
|
||||||
static const char * const BAR_BG_COLOR = "#222222";
|
static char const * BAR_BG_COLOR = "#222222";
|
||||||
static const char * const BAR_FG_COLOR = "#EEEEEE";
|
static char const * BAR_FG_COLOR = "#EEEEEE";
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef _IMAGE_CONFIG
|
#ifdef _IMAGE_CONFIG
|
||||||
|
|
37
window.c
37
window.c
|
@ -27,6 +27,7 @@
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <X11/cursorfont.h>
|
#include <X11/cursorfont.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
|
#include <X11/Xresource.h>
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
H_TEXT_PAD = 5,
|
H_TEXT_PAD = 5,
|
||||||
|
@ -99,6 +100,35 @@ void win_check_wm_support(Display *dpy, Window root)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void get_xresource(Display *dpy, const char* rsc, const void* dst)
|
||||||
|
{
|
||||||
|
char *type;
|
||||||
|
XrmValue ret;
|
||||||
|
XrmDatabase db;
|
||||||
|
char fullname[256];
|
||||||
|
char *resource_manager;
|
||||||
|
|
||||||
|
XrmInitialize();
|
||||||
|
resource_manager = XResourceManagerString(dpy);
|
||||||
|
|
||||||
|
if (resource_manager == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
db = XrmGetStringDatabase(resource_manager);
|
||||||
|
|
||||||
|
if (db == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
snprintf(fullname, sizeof(fullname), ".%s", rsc);
|
||||||
|
fullname[sizeof(fullname) - 1] = '\0';
|
||||||
|
|
||||||
|
XrmGetResource(db, fullname, "String", &type, &ret);
|
||||||
|
|
||||||
|
if (ret.addr != NULL || !strncmp("String", type, 64)) {
|
||||||
|
*( (char **) dst ) = ret.addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#define INIT_ATOM_(atom) \
|
#define INIT_ATOM_(atom) \
|
||||||
atoms[ATOM_##atom] = XInternAtom(e->dpy, #atom, False);
|
atoms[ATOM_##atom] = XInternAtom(e->dpy, #atom, False);
|
||||||
|
|
||||||
|
@ -122,6 +152,11 @@ void win_init(win_t *win)
|
||||||
if (setlocale(LC_CTYPE, "") == NULL || XSupportsLocale() == 0)
|
if (setlocale(LC_CTYPE, "") == NULL || XSupportsLocale() == 0)
|
||||||
error(0, 0, "No locale support");
|
error(0, 0, "No locale support");
|
||||||
|
|
||||||
|
get_xresource(e->dpy, "background", &WIN_BG_COLOR);
|
||||||
|
get_xresource(e->dpy, "background", &BAR_FG_COLOR);
|
||||||
|
get_xresource(e->dpy, "foreground", &BAR_BG_COLOR);
|
||||||
|
get_xresource(e->dpy, "foreground", &SEL_COLOR);
|
||||||
|
|
||||||
win_init_font(e, BAR_FONT);
|
win_init_font(e, BAR_FONT);
|
||||||
|
|
||||||
win_alloc_color(e, WIN_BG_COLOR, &win->bgcol);
|
win_alloc_color(e, WIN_BG_COLOR, &win->bgcol);
|
||||||
|
@ -210,7 +245,7 @@ void win_open(win_t *win)
|
||||||
e->depth, InputOutput, e->vis, 0, NULL);
|
e->depth, InputOutput, e->vis, 0, NULL);
|
||||||
if (win->xwin == None)
|
if (win->xwin == None)
|
||||||
error(EXIT_FAILURE, 0, "Error creating X window");
|
error(EXIT_FAILURE, 0, "Error creating X window");
|
||||||
|
|
||||||
XSelectInput(e->dpy, win->xwin,
|
XSelectInput(e->dpy, win->xwin,
|
||||||
ButtonReleaseMask | ButtonPressMask | KeyPressMask |
|
ButtonReleaseMask | ButtonPressMask | KeyPressMask |
|
||||||
PointerMotionMask | StructureNotifyMask);
|
PointerMotionMask | StructureNotifyMask);
|
||||||
|
|
Loading…
Reference in a new issue