dwm

Kris's build of dwm
git clone git clone https://git.krisyotam.com/krisyotam/dwm.git
Log | Files | Refs | README | LICENSE

xresources.c (1407B)


      1 void
      2 resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst)
      3 {
      4 	char *sdst = NULL;
      5 	int *idst = NULL;
      6 	float *fdst = NULL;
      7 
      8 	sdst = dst;
      9 	idst = dst;
     10 	fdst = dst;
     11 
     12 	char fullname[256];
     13 	char *type;
     14 	XrmValue ret;
     15 
     16 	snprintf(fullname, sizeof(fullname), "%s.%s", "dwm", name);
     17 	fullname[sizeof(fullname) - 1] = '\0';
     18 
     19 	XrmGetResource(db, fullname, "*", &type, &ret);
     20 	if (!(ret.addr == NULL || strncmp("String", type, 64)))
     21 	{
     22 		switch (rtype) {
     23 		case STRING:
     24 			strcpy(sdst, ret.addr);
     25 			break;
     26 		case INTEGER:
     27 			*idst = strtoul(ret.addr, NULL, 10);
     28 			break;
     29 		case FLOAT:
     30 			*fdst = strtof(ret.addr, NULL);
     31 			break;
     32 		}
     33 	}
     34 }
     35 
     36 void
     37 load_xresources(void)
     38 {
     39 	Display *display;
     40 	char *resm;
     41 	XrmDatabase db;
     42 	ResourcePref *p;
     43 
     44 	display = XOpenDisplay(NULL);
     45 	resm = XResourceManagerString(display);
     46 	if (!resm)
     47 		return;
     48 
     49 	db = XrmGetStringDatabase(resm);
     50 	for (p = resources; p < resources + LENGTH(resources); p++)
     51 		resource_load(db, p->name, p->type, p->dst);
     52 	XCloseDisplay(display);
     53 }
     54 
     55 void
     56 xrdb(const Arg *arg)
     57 {
     58 	int i;
     59 	load_xresources();
     60 	for (i = 0; i < LENGTH(colors); i++)
     61 		scheme[i] = drw_scm_create(drw, colors[i],
     62 		#if BAR_ALPHA_PATCH
     63 		alphas[i],
     64 		#endif // BAR_ALPHA_PATCH
     65 		ColCount
     66 		);
     67 	#if BAR_SYSTRAY_PATCH && !BAR_ALPHA_PATCH
     68 	if (systray) {
     69 		XMoveWindow(dpy, systray->win, -32000, -32000);
     70 	}
     71 	#endif // BAR_SYSTRAY_PATCH
     72 	arrange(NULL);
     73 	focus(NULL);
     74 }