about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorarg@10ksloc.org <unknown>2006-08-01 13:59:13 +0200
committerarg@10ksloc.org <unknown>2006-08-01 13:59:13 +0200
commita73a88280681acdab047bd11a9ba77d97d6a0b72 (patch)
tree03703345ad51ac1112cc502db4f9337d246cf533
parent57416beefec4db451a75a1d25434b69cf50badad (diff)
downloaddwm-a73a88280681acdab047bd11a9ba77d97d6a0b72.tar.gz
centralized/externalized configuration to config.h
-rw-r--r--README8
-rw-r--r--config.arg.h76
-rw-r--r--config.h67
-rw-r--r--config.mk7
-rw-r--r--dwm.16
-rw-r--r--dwm.h21
-rw-r--r--event.c68
-rw-r--r--main.c4
-rw-r--r--tag.c22
9 files changed, 172 insertions, 107 deletions
diff --git a/README b/README
index f7721cf..8781cd8 100644
--- a/README
+++ b/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.
diff --git a/config.arg.h b/config.arg.h
new file mode 100644
index 0000000..aeefc5c
--- /dev/null
+++ b/config.arg.h
@@ -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
diff --git a/config.h b/config.h
new file mode 100644
index 0000000..430539c
--- /dev/null
+++ b/config.h
@@ -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
diff --git a/config.mk b/config.mk
index d4ae17e..d65472e 100644
--- a/config.mk
+++ b/config.mk
@@ -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
diff --git a/dwm.1 b/dwm.1
index 3f1f75a..e7f1758 100644
--- a/dwm.1
+++ b/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.
diff --git a/dwm.h b/dwm.h
index 0b6b21f..f7bebb0 100644
--- a/dwm.h
+++ b/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)
diff --git a/event.c b/event.c
index f177cbe..967be91 100644
--- a/event.c
+++ b/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 };
-
-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 */
+CMDS
+KEYS
 
-/* 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);
 	}
 }
diff --git a/main.c b/main.c
index dffa4ba..0e94e2c 100644
--- a/main.c
+++ b/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;
diff --git a/tag.c b/tag.c
index 6b7e184..f7513c1 100644
--- a/tag.c
+++ b/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},
-};
-
-char *tags[TLast] = {
-	[Tfnord] = "fnord",
-	[Tdev] = "dev",
-	[Tnet] = "net",
-	[Twork] = "work",
-	[Tmisc] = "misc",
-};
-
-void (*arrange)(Arg *) = dotile;
-
-/* END CUSTOMIZE */
+TAGS
+RULES
+
+void (*arrange)(Arg *) = ARRANGE;
 
 /* extern */