centralized/externalized configuration to config.h
authorarg@10ksloc.org
Tue, 01 Aug 2006 13:59:13 +0200
changeset 146 f328ce9c558c
parent 145 774754477c35
child 147 a94577c9de73
centralized/externalized configuration to config.h
README
config.arg.h
config.h
config.mk
dwm.1
dwm.h
event.c
main.c
tag.c
--- a/README	Tue Aug 01 12:41:38 2006 +0200
+++ b/README	Tue Aug 01 13:59:13 2006 +0200
@@ -18,6 +18,11 @@
 
     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 @@
 
 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.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config.arg.h	Tue Aug 01 13:59:13 2006 +0200
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config.h	Tue Aug 01 13:59:13 2006 +0200
@@ -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
--- a/config.mk	Tue Aug 01 12:41:38 2006 +0200
+++ b/config.mk	Tue Aug 01 13:59:13 2006 +0200
@@ -12,9 +12,9 @@
 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 @@
 
 # dwm version
 VERSION = 0.6
+
+# default config.h
+CONFIG = config.h
--- a/dwm.1	Tue Aug 01 12:41:38 2006 +0200
+++ b/dwm.1	Tue Aug 01 13:59:13 2006 +0200
@@ -98,7 +98,5 @@
 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.
--- a/dwm.h	Tue Aug 01 12:41:38 2006 +0200
+++ b/dwm.h	Tue Aug 01 13:59:13 2006 +0200
@@ -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)
--- a/event.c	Tue Aug 01 12:41:38 2006 +0200
+++ b/event.c	Tue Aug 01 13:59:13 2006 +0200
@@ -8,7 +8,7 @@
 #include <X11/keysym.h>
 #include <X11/Xatom.h>
 
-/* CUSTOMIZE */
+/* static */
 
 typedef struct {
 	unsigned long mod;
@@ -17,52 +17,10 @@
 	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 @@
 	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);
 	}
 }
--- a/main.c	Tue Aug 01 12:41:38 2006 +0200
+++ b/main.c	Tue Aug 01 13:59:13 2006 +0200
@@ -85,9 +85,7 @@
 /* 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;
--- a/tag.c	Tue Aug 01 12:41:38 2006 +0200
+++ b/tag.c	Tue Aug 01 13:59:13 2006 +0200
@@ -18,24 +18,10 @@
 	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 */