Compare commits
	
		
			3 Commits
		
	
	
		
			config
			...
			eba5410764
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | eba5410764 | ||
|  | ab5128a96e | ||
|  | a7ec4edb9d | 
							
								
								
									
										34
									
								
								config.def.h
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								config.def.h
									
									
									
									
									
								
							| @@ -157,6 +157,40 @@ static unsigned int mousebg = 0; | ||||
|  */ | ||||
| static unsigned int defaultattr = 11; | ||||
|  | ||||
| /* | ||||
|  * Xresources preferences to load at startup | ||||
|  */ | ||||
| ResourcePref resources[] = { | ||||
| 		{ "font",         STRING,  &font }, | ||||
| 		{ "color0",       STRING,  &colorname[0] }, | ||||
| 		{ "color1",       STRING,  &colorname[1] }, | ||||
| 		{ "color2",       STRING,  &colorname[2] }, | ||||
| 		{ "color3",       STRING,  &colorname[3] }, | ||||
| 		{ "color4",       STRING,  &colorname[4] }, | ||||
| 		{ "color5",       STRING,  &colorname[5] }, | ||||
| 		{ "color6",       STRING,  &colorname[6] }, | ||||
| 		{ "color7",       STRING,  &colorname[7] }, | ||||
| 		{ "color8",       STRING,  &colorname[8] }, | ||||
| 		{ "color9",       STRING,  &colorname[9] }, | ||||
| 		{ "color10",      STRING,  &colorname[10] }, | ||||
| 		{ "color11",      STRING,  &colorname[11] }, | ||||
| 		{ "color12",      STRING,  &colorname[12] }, | ||||
| 		{ "color13",      STRING,  &colorname[13] }, | ||||
| 		{ "color14",      STRING,  &colorname[14] }, | ||||
| 		{ "color15",      STRING,  &colorname[15] }, | ||||
| 		{ "background",   STRING,  &colorname[256] }, | ||||
| 		{ "foreground",   STRING,  &colorname[257] }, | ||||
| 		{ "cursorColor",  STRING,  &colorname[258] }, | ||||
| 		{ "termname",     STRING,  &termname }, | ||||
| 		{ "shell",        STRING,  &shell }, | ||||
| 		{ "blinktimeout", INTEGER, &blinktimeout }, | ||||
| 		{ "bellvolume",   INTEGER, &bellvolume }, | ||||
| 		{ "tabspaces",    INTEGER, &tabspaces }, | ||||
| 		{ "borderpx",     INTEGER, &borderpx }, | ||||
| 		{ "cwscale",      FLOAT,   &cwscale }, | ||||
| 		{ "chscale",      FLOAT,   &chscale }, | ||||
| }; | ||||
|  | ||||
| /* | ||||
|  * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set). | ||||
|  * Note that if you want to use ShiftMask with selmasks, set this to an other | ||||
|   | ||||
							
								
								
									
										79
									
								
								x.c
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								x.c
									
									
									
									
									
								
							| @@ -14,6 +14,7 @@ | ||||
| #include <X11/keysym.h> | ||||
| #include <X11/Xft/Xft.h> | ||||
| #include <X11/XKBlib.h> | ||||
| #include <X11/Xresource.h> | ||||
|  | ||||
| char *argv0; | ||||
| #include "arg.h" | ||||
| @@ -45,6 +46,20 @@ typedef struct { | ||||
| 	signed char appcursor; /* application cursor */ | ||||
| } Key; | ||||
|  | ||||
| /* Xresources preferences */ | ||||
| enum resource_type { | ||||
| 	STRING = 0, | ||||
| 	INTEGER = 1, | ||||
| 	FLOAT = 2 | ||||
| }; | ||||
|  | ||||
| typedef struct { | ||||
| 	char *name; | ||||
| 	enum resource_type type; | ||||
| 	void *dst; | ||||
| } ResourcePref; | ||||
|  | ||||
|  | ||||
| /* X modifiers */ | ||||
| #define XK_ANY_MOD    UINT_MAX | ||||
| #define XK_NO_MOD     0 | ||||
| @@ -828,8 +843,8 @@ xclear(int x1, int y1, int x2, int y2) | ||||
| void | ||||
| xhints(void) | ||||
| { | ||||
| 	XClassHint class = {opt_name ? opt_name : termname, | ||||
| 	                    opt_class ? opt_class : termname}; | ||||
| 	XClassHint class = {opt_name ? opt_name : "st", | ||||
| 	                    opt_class ? opt_class : "St"}; | ||||
| 	XWMHints wm = {.flags = InputHint, .input = 1}; | ||||
| 	XSizeHints *sizeh; | ||||
|  | ||||
| @@ -1104,8 +1119,6 @@ xinit(int cols, int rows) | ||||
| 	pid_t thispid = getpid(); | ||||
| 	XColor xmousefg, xmousebg; | ||||
|  | ||||
| 	if (!(xw.dpy = XOpenDisplay(NULL))) | ||||
| 		die("can't open display\n"); | ||||
| 	xw.scr = XDefaultScreen(xw.dpy); | ||||
| 	xw.vis = XDefaultVisual(xw.dpy, xw.scr); | ||||
|  | ||||
| @@ -1965,6 +1978,60 @@ run(void) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| int | ||||
| resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst) | ||||
| { | ||||
| 	char **sdst = dst; | ||||
| 	int *idst = dst; | ||||
| 	float *fdst = dst; | ||||
|  | ||||
| 	char fullname[256]; | ||||
| 	char fullclass[256]; | ||||
| 	char *type; | ||||
| 	XrmValue ret; | ||||
|  | ||||
| 	snprintf(fullname, sizeof(fullname), "%s.%s", | ||||
| 			opt_name ? opt_name : "st", name); | ||||
| 	snprintf(fullclass, sizeof(fullclass), "%s.%s", | ||||
| 			opt_class ? opt_class : "St", name); | ||||
| 	fullname[sizeof(fullname) - 1] = fullclass[sizeof(fullclass) - 1] = '\0'; | ||||
|  | ||||
| 	XrmGetResource(db, fullname, fullclass, &type, &ret); | ||||
| 	if (ret.addr == NULL || strncmp("String", type, 64)) | ||||
| 		return 1; | ||||
|  | ||||
| 	switch (rtype) { | ||||
| 	case STRING: | ||||
| 		*sdst = ret.addr; | ||||
| 		break; | ||||
| 	case INTEGER: | ||||
| 		*idst = strtoul(ret.addr, NULL, 10); | ||||
| 		break; | ||||
| 	case FLOAT: | ||||
| 		*fdst = strtof(ret.addr, NULL); | ||||
| 		break; | ||||
| 	} | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| void | ||||
| config_init(void) | ||||
| { | ||||
| 	char *resm; | ||||
| 	XrmDatabase db; | ||||
| 	ResourcePref *p; | ||||
|  | ||||
| 	XrmInitialize(); | ||||
| 	resm = XResourceManagerString(xw.dpy); | ||||
| 	if (!resm) | ||||
| 		return; | ||||
|  | ||||
| 	db = XrmGetStringDatabase(resm); | ||||
| 	for (p = resources; p < resources + LEN(resources); p++) | ||||
| 		resource_load(db, p->name, p->type, p->dst); | ||||
| } | ||||
|  | ||||
|  | ||||
| void | ||||
| usage(void) | ||||
| { | ||||
| @@ -2038,6 +2105,10 @@ run: | ||||
|  | ||||
| 	setlocale(LC_CTYPE, ""); | ||||
| 	XSetLocaleModifiers(""); | ||||
| 	if(!(xw.dpy = XOpenDisplay(NULL))) | ||||
| 		die("Can't open display\n"); | ||||
|  | ||||
| 	config_init(); | ||||
| 	cols = MAX(cols, 1); | ||||
| 	rows = MAX(rows, 1); | ||||
| 	tnew(cols, rows); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user