centralized/externalized configuration to config.h
This commit is contained in:
		
							
								
								
									
										8
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								README
									
									
									
									
									
								
							| @@ -18,6 +18,11 @@ necessary as root): | ||||
|  | ||||
|     make clean install | ||||
|  | ||||
| If you want to use a customized config.h, you can use the following | ||||
| command for installing dwm: | ||||
|  | ||||
|     make CONFIG=<your-config>.h clean install | ||||
|  | ||||
|  | ||||
| Running dwm | ||||
| ----------- | ||||
| @@ -47,5 +52,4 @@ like this in your .xinitrc: | ||||
|  | ||||
| Configuration | ||||
| ------------- | ||||
| The configuration of dwm is done by customizing its source code | ||||
| (grep for the CUSTOMIZE keyword). | ||||
| The configuration of dwm is done by editing config.h. | ||||
|   | ||||
							
								
								
									
										76
									
								
								config.arg.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								config.arg.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| /* | ||||
|  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> | ||||
|  * See LICENSE file for license details. | ||||
|  */ | ||||
|  | ||||
| #define FONT			"-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*" | ||||
| #define BGCOLOR			"#0a2c2d" | ||||
| #define FGCOLOR			"#ddeeee" | ||||
| #define BORDERCOLOR		"#176164" | ||||
| #define MODKEY			Mod1Mask | ||||
| #define NUMLOCKMASK		Mod2Mask | ||||
| #define MASTERW			52 /* percent */ | ||||
| #define WM_PROTOCOL_DELWIN	1 | ||||
|  | ||||
| enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; | ||||
| #define TAGS \ | ||||
| char *tags[TLast] = { \ | ||||
| 	[Tfnord] = "fnord", \ | ||||
| 	[Tdev] = "dev", \ | ||||
| 	[Tnet] = "net", \ | ||||
| 	[Twork] = "work", \ | ||||
| 	[Tmisc] = "misc", \ | ||||
| }; | ||||
| #define DEFTAG Tdev | ||||
|  | ||||
|  | ||||
| #define CMDS \ | ||||
| 	const char *browse[] = { "firefox", NULL }; \ | ||||
| 	const char *gimp[] = { "gimp", NULL }; \ | ||||
| 	const char *term[] = { \ | ||||
| 		"urxvt", "-tr", "+sb", "-bg", "black", "-fg", "white", "-cr", "white", \ | ||||
| 		"-fn", "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*", NULL \ | ||||
| 	}; \ | ||||
| 	const char *xlock[] = { "xlock", NULL }; | ||||
|  | ||||
| #define KEYS \ | ||||
| static Key key[] = { \ | ||||
| 	/* modifier		key		function	arguments */ \ | ||||
| 	{ MODKEY,		XK_0,		view,		{ .i = Tfnord } }, \ | ||||
| 	{ MODKEY,		XK_1,		view,		{ .i = Tdev } }, \ | ||||
| 	{ MODKEY,		XK_2,		view,		{ .i = Tnet } }, \ | ||||
| 	{ MODKEY,		XK_3,		view,		{ .i = Twork } }, \ | ||||
| 	{ MODKEY,		XK_4,		view,		{ .i = Tmisc} }, \ | ||||
| 	{ MODKEY,		XK_h,		viewprev,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_j,		focusnext,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_k,		focusprev,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_l,		viewnext,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_m,		togglemax,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_space,	togglemode,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_Return,	zoom,		{ 0 } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_0,		appendtag,	{ .i = Tfnord } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_1,		appendtag,	{ .i = Tdev } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_2,		appendtag,	{ .i = Tnet } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_3,		appendtag,	{ .i = Twork } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_4,		appendtag,	{ .i = Tmisc } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_0,		replacetag,	{ .i = Tfnord } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_1,		replacetag,	{ .i = Tdev } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_2,		replacetag,	{ .i = Tnet } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_3,		replacetag,	{ .i = Twork } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_4,		replacetag,	{ .i = Tmisc } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_c,		killclient,	{ 0 } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_q,		quit,		{ 0 } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_Return,	spawn,		{ .argv = term } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_g,		spawn,		{ .argv = gimp } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_l,		spawn,		{ .argv = xlock } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_w,		spawn,		{ .argv = browse } }, \ | ||||
| }; | ||||
|  | ||||
| #define RULES \ | ||||
| static Rule rule[] = { \ | ||||
| 	/* class:instance	tags				isfloat */ \ | ||||
| 	{ "Firefox.*",		{ [Tnet] = "net" },		False }, \ | ||||
| 	{ "Gimp.*",		{ 0 },				True}, \ | ||||
| }; | ||||
|  | ||||
| #define ARRANGE dotile | ||||
							
								
								
									
										67
									
								
								config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								config.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| /* | ||||
|  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> | ||||
|  * See LICENSE file for license details. | ||||
|  */ | ||||
|  | ||||
| #define FONT			"fixed" | ||||
| #define BGCOLOR			"#666699" | ||||
| #define FGCOLOR			"#eeeeee" | ||||
| #define BORDERCOLOR		"#9999CC" | ||||
| #define MODKEY			Mod1Mask | ||||
| #define NUMLOCKMASK		Mod2Mask | ||||
| #define MASTERW			52 /* percent */ | ||||
| #define WM_PROTOCOL_DELWIN	1 | ||||
|  | ||||
| enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; | ||||
| #define TAGS \ | ||||
| char *tags[TLast] = { \ | ||||
| 	[Tfnord] = "fnord", \ | ||||
| 	[Tdev] = "dev", \ | ||||
| 	[Tnet] = "net", \ | ||||
| 	[Twork] = "work", \ | ||||
| 	[Tmisc] = "misc", \ | ||||
| }; | ||||
| #define DEFTAG Tdev | ||||
|  | ||||
|  | ||||
| #define CMDS \ | ||||
| 	const char *term[] = { "xterm", NULL }; | ||||
|  | ||||
| #define KEYS \ | ||||
| static Key key[] = { \ | ||||
| 	/* modifier		key		function	arguments */ \ | ||||
| 	{ MODKEY,		XK_0,		view,		{ .i = Tfnord } }, \ | ||||
| 	{ MODKEY,		XK_1,		view,		{ .i = Tdev } }, \ | ||||
| 	{ MODKEY,		XK_2,		view,		{ .i = Tnet } }, \ | ||||
| 	{ MODKEY,		XK_3,		view,		{ .i = Twork } }, \ | ||||
| 	{ MODKEY,		XK_4,		view,		{ .i = Tmisc} }, \ | ||||
| 	{ MODKEY,		XK_h,		viewprev,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_j,		focusnext,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_k,		focusprev,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_l,		viewnext,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_m,		togglemax,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_space,	togglemode,	{ 0 } }, \ | ||||
| 	{ MODKEY,		XK_Return,	zoom,		{ 0 } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_0,		appendtag,	{ .i = Tfnord } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_1,		appendtag,	{ .i = Tdev } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_2,		appendtag,	{ .i = Tnet } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_3,		appendtag,	{ .i = Twork } }, \ | ||||
| 	{ MODKEY|ControlMask,	XK_4,		appendtag,	{ .i = Tmisc } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_0,		replacetag,	{ .i = Tfnord } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_1,		replacetag,	{ .i = Tdev } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_2,		replacetag,	{ .i = Tnet } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_3,		replacetag,	{ .i = Twork } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_4,		replacetag,	{ .i = Tmisc } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_c,		killclient,	{ 0 } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_q,		quit,		{ 0 } }, \ | ||||
| 	{ MODKEY|ShiftMask,	XK_Return,	spawn,		{ .argv = term } }, \ | ||||
| }; | ||||
|  | ||||
| #define RULES \ | ||||
| static Rule rule[] = { \ | ||||
| 	/* class:instance	tags				isfloat */ \ | ||||
| 	{ "Firefox.*",		{ [Tnet] = "net" },		False }, \ | ||||
| 	{ "Gimp.*",		{ 0 },				True}, \ | ||||
| }; | ||||
|  | ||||
| #define ARRANGE dotile | ||||
| @@ -12,9 +12,9 @@ INCS = -I/usr/lib -I${X11INC} | ||||
| LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 | ||||
|  | ||||
| # flags | ||||
| CFLAGS = -O3 ${INCS} -DVERSION=\"${VERSION}\" | ||||
| CFLAGS = -O3 ${INCS} -DVERSION=\"${VERSION}\" -DCONFIG=\"${CONFIG}\" | ||||
| LDFLAGS = ${LIBS} | ||||
| #CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\" | ||||
| #CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\" -DCONFIG=\"${CONFIGH}\" | ||||
| #LDFLAGS = -g ${LIBS} | ||||
|  | ||||
| # compiler | ||||
| @@ -22,3 +22,6 @@ CC = cc | ||||
|  | ||||
| # dwm version | ||||
| VERSION = 0.6 | ||||
|  | ||||
| # default config.h | ||||
| CONFIG = config.h | ||||
|   | ||||
							
								
								
									
										6
									
								
								dwm.1
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								dwm.1
									
									
									
									
									
								
							| @@ -98,7 +98,5 @@ Resizes current | ||||
| while dragging | ||||
| .SH CUSTOMIZATION | ||||
| .B dwm | ||||
| is customized through editing its source code.  This keeps it fast, secure and | ||||
| simple. The source code contains the | ||||
| .I CUSTOMIZE | ||||
| keyword to highlight relevant portions for customization. | ||||
| is customized through editing config.h of the source code.  This keeps it fast, | ||||
| secure and simple. | ||||
|   | ||||
							
								
								
									
										21
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								dwm.h
									
									
									
									
									
								
							| @@ -4,26 +4,7 @@ | ||||
|  */ | ||||
|  | ||||
| #include <X11/Xlib.h> | ||||
|  | ||||
| /* CUSTOMIZE */ | ||||
|  | ||||
| #define FONT			"-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*" | ||||
| #define BGCOLOR			"#0a2c2d" | ||||
| #define FGCOLOR			"#ddeeee" | ||||
| #define BORDERCOLOR		"#176164" | ||||
| #define MODKEY			Mod1Mask /* Mod4Mask */ | ||||
| /* | ||||
| #define BGCOLOR			"#666699" | ||||
| #define FGCOLOR			"#eeeeee" | ||||
| #define BORDERCOLOR		"#9999CC" | ||||
| */ | ||||
| #define MASTERW			52 /* percent */ | ||||
| #define WM_PROTOCOL_DELWIN	1 | ||||
|  | ||||
| /* tags */ | ||||
| enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; | ||||
|  | ||||
| /* END CUSTOMIZE */ | ||||
| #include CONFIG | ||||
|  | ||||
| /* mask shorthands, used in event.c and client.c */ | ||||
| #define ButtonMask	(ButtonPressMask | ButtonReleaseMask) | ||||
|   | ||||
							
								
								
									
										68
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								event.c
									
									
									
									
									
								
							| @@ -8,7 +8,7 @@ | ||||
| #include <X11/keysym.h> | ||||
| #include <X11/Xatom.h> | ||||
|  | ||||
| /* CUSTOMIZE */ | ||||
| /* static */ | ||||
|  | ||||
| typedef struct { | ||||
| 	unsigned long mod; | ||||
| @@ -17,52 +17,10 @@ typedef struct { | ||||
| 	Arg arg; | ||||
| } Key; | ||||
|  | ||||
| const char *browse[] = { "firefox", NULL }; | ||||
| const char *gimp[] = { "gimp", NULL }; | ||||
| const char *term[] = { /*"xterm", NULL };*/ | ||||
| 	"urxvt", "-tr", "+sb", "-bg", "black", "-fg", "white", "-cr", "white", | ||||
| 	"-fn", "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*", NULL | ||||
| }; | ||||
| const char *xlock[] = { "xlock", NULL }; | ||||
| CMDS | ||||
| KEYS | ||||
|  | ||||
| static Key key[] = { | ||||
| 	/* modifier		key		function	arguments */ | ||||
| 	{ MODKEY,		XK_0,		view,		{ .i = Tfnord } },  | ||||
| 	{ MODKEY,		XK_1,		view,		{ .i = Tdev } },  | ||||
| 	{ MODKEY,		XK_2,		view,		{ .i = Tnet } },  | ||||
| 	{ MODKEY,		XK_3,		view,		{ .i = Twork } },  | ||||
| 	{ MODKEY,		XK_4,		view,		{ .i = Tmisc} },  | ||||
| 	{ MODKEY,		XK_h,		viewprev,	{ 0 } }, | ||||
| 	{ MODKEY,		XK_j,		focusnext,	{ 0 } },  | ||||
| 	{ MODKEY,		XK_k,		focusprev,	{ 0 } }, | ||||
| 	{ MODKEY,		XK_l,		viewnext,	{ 0 } }, | ||||
| 	{ MODKEY,		XK_m,		togglemax,	{ 0 } },  | ||||
| 	{ MODKEY,		XK_space,	togglemode,	{ 0 } },  | ||||
| 	{ MODKEY,		XK_Return,	zoom,		{ 0 } }, | ||||
| 	{ MODKEY|ControlMask,	XK_0,		appendtag,	{ .i = Tfnord } },  | ||||
| 	{ MODKEY|ControlMask,	XK_1,		appendtag,	{ .i = Tdev } },  | ||||
| 	{ MODKEY|ControlMask,	XK_2,		appendtag,	{ .i = Tnet } },  | ||||
| 	{ MODKEY|ControlMask,	XK_3,		appendtag,	{ .i = Twork } },  | ||||
| 	{ MODKEY|ControlMask,	XK_4,		appendtag,	{ .i = Tmisc } },  | ||||
| 	{ MODKEY|ShiftMask,	XK_0,		replacetag,	{ .i = Tfnord } },  | ||||
| 	{ MODKEY|ShiftMask,	XK_1,		replacetag,	{ .i = Tdev } },  | ||||
| 	{ MODKEY|ShiftMask,	XK_2,		replacetag,	{ .i = Tnet } },  | ||||
| 	{ MODKEY|ShiftMask,	XK_3,		replacetag,	{ .i = Twork } },  | ||||
| 	{ MODKEY|ShiftMask,	XK_4,		replacetag,	{ .i = Tmisc } },  | ||||
| 	{ MODKEY|ShiftMask,	XK_c,		killclient,	{ 0 } },  | ||||
| 	{ MODKEY|ShiftMask,	XK_q,		quit,		{ 0 } }, | ||||
| 	{ MODKEY|ShiftMask,	XK_Return,	spawn,		{ .argv = term } }, | ||||
| 	{ MODKEY|ShiftMask,	XK_g,		spawn,		{ .argv = gimp } }, | ||||
| 	{ MODKEY|ShiftMask,	XK_l,		spawn,		{ .argv = xlock } }, | ||||
| 	{ MODKEY|ShiftMask,	XK_w,		spawn,		{ .argv = browse } }, | ||||
| }; | ||||
|  | ||||
| #define NumLockMask Mod2Mask | ||||
| unsigned int valid_mask =  255 &  ~( NumLockMask | LockMask); | ||||
|  | ||||
| /* END CUSTOMIZE */ | ||||
|  | ||||
| /* static */ | ||||
| static unsigned int valid_mask =  255 &  ~(NUMLOCKMASK | LockMask); | ||||
|  | ||||
| static void | ||||
| movemouse(Client *c) | ||||
| @@ -381,19 +339,13 @@ grabkeys() | ||||
| 	for(i = 0; i < len; i++) { | ||||
| 		code = XKeysymToKeycode(dpy, key[i].keysym); | ||||
| 		XUngrabKey(dpy, code, key[i].mod, root); | ||||
| 		if (NumLockMask) | ||||
| 		{ | ||||
| 			XUngrabKey(dpy, code, key[i].mod | NumLockMask, root); | ||||
| 			XUngrabKey(dpy, code, key[i].mod | NumLockMask | LockMask, root); | ||||
| 		} | ||||
| 		XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root); | ||||
| 		XUngrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root); | ||||
| 		XGrabKey(dpy, code, key[i].mod, root, True, | ||||
| 				GrabModeAsync, GrabModeAsync); | ||||
| 		if (NumLockMask) | ||||
| 		{ | ||||
| 			XGrabKey(dpy, code, key[i].mod | NumLockMask, root, True, | ||||
| 					GrabModeAsync, GrabModeAsync); | ||||
| 			XGrabKey(dpy, code, key[i].mod | NumLockMask | LockMask, root, True, | ||||
| 					GrabModeAsync, GrabModeAsync); | ||||
| 		} | ||||
| 		XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root, True, | ||||
| 				GrabModeAsync, GrabModeAsync); | ||||
| 		XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root, True, | ||||
| 				GrabModeAsync, GrabModeAsync); | ||||
| 	} | ||||
| } | ||||
|   | ||||
							
								
								
									
										4
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								main.c
									
									
									
									
									
								
							| @@ -85,9 +85,7 @@ xerrorstart(Display *dsply, XErrorEvent *ee) | ||||
| /* extern */ | ||||
|  | ||||
| char stext[1024]; | ||||
| /* CUSTOMIZE */ | ||||
| int tsel = Tdev; /* default tag */ | ||||
| /* END CUSTOMIZE */ | ||||
| int tsel = DEFTAG; | ||||
| int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | ||||
| Atom wmatom[WMLast], netatom[NetLast]; | ||||
| Bool running = True; | ||||
|   | ||||
							
								
								
									
										20
									
								
								tag.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								tag.c
									
									
									
									
									
								
							| @@ -18,24 +18,10 @@ typedef struct { | ||||
| 	Bool isfloat; | ||||
| } Rule; | ||||
|  | ||||
| /* CUSTOMIZE */  | ||||
| static Rule rule[] = { | ||||
| 	/* class:instance	tags				isfloat */ | ||||
| 	{ "Firefox.*",		{ [Tnet] = "net" },		False }, | ||||
| 	{ "Gimp.*",		{ 0 },				True}, | ||||
| }; | ||||
| TAGS | ||||
| RULES | ||||
|  | ||||
| char *tags[TLast] = { | ||||
| 	[Tfnord] = "fnord", | ||||
| 	[Tdev] = "dev", | ||||
| 	[Tnet] = "net", | ||||
| 	[Twork] = "work", | ||||
| 	[Tmisc] = "misc", | ||||
| }; | ||||
|  | ||||
| void (*arrange)(Arg *) = dotile; | ||||
|  | ||||
| /* END CUSTOMIZE */ | ||||
| void (*arrange)(Arg *) = ARRANGE; | ||||
|  | ||||
| /* extern */ | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user