JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
centralized/externalized configuration to config.h
authorarg@10ksloc.org <unknown>
Tue, 1 Aug 2006 11:59:13 +0000 (13:59 +0200)
committerarg@10ksloc.org <unknown>
Tue, 1 Aug 2006 11:59:13 +0000 (13:59 +0200)
README
config.arg.h [new file with mode: 0644]
config.h [new file with mode: 0644]
config.mk
dwm.1
dwm.h
event.c
main.c
tag.c

diff --git a/README b/README
index f7721cf..8781cd8 100644 (file)
--- a/README
+++ b/README
@@ -18,6 +18,11 @@ necessary as root):
 
     make clean install
 
 
     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
 -----------
 
 Running dwm
 -----------
@@ -47,5 +52,4 @@ like this in your .xinitrc:
 
 Configuration
 -------------
 
 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 (file)
index 0000000..aeefc5c
--- /dev/null
@@ -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 (file)
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
index d4ae17e..d65472e 100644 (file)
--- 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
 LIBS = -L/usr/lib -lc -L${X11LIB} -lX11
 
 # flags
-CFLAGS = -O3 ${INCS} -DVERSION=\"${VERSION}\"
+CFLAGS = -O3 ${INCS} -DVERSION=\"${VERSION}\" -DCONFIG=\"${CONFIG}\"
 LDFLAGS = ${LIBS}
 LDFLAGS = ${LIBS}
-#CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\"
+#CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\" -DCONFIG=\"${CONFIGH}\"
 #LDFLAGS = -g ${LIBS}
 
 # compiler
 #LDFLAGS = -g ${LIBS}
 
 # compiler
@@ -22,3 +22,6 @@ CC = cc
 
 # dwm version
 VERSION = 0.6
 
 # dwm version
 VERSION = 0.6
+
+# default config.h
+CONFIG = config.h
diff --git a/dwm.1 b/dwm.1
index 3f1f75a..e7f1758 100644 (file)
--- a/dwm.1
+++ b/dwm.1
@@ -98,7 +98,5 @@ Resizes current
 while dragging
 .SH CUSTOMIZATION
 .B dwm
 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 (file)
--- a/dwm.h
+++ b/dwm.h
@@ -4,26 +4,7 @@
  */
 
 #include <X11/Xlib.h>
  */
 
 #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)
 
 /* 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 (file)
--- a/event.c
+++ b/event.c
@@ -8,7 +8,7 @@
 #include <X11/keysym.h>
 #include <X11/Xatom.h>
 
 #include <X11/keysym.h>
 #include <X11/Xatom.h>
 
-/* CUSTOMIZE */
+/* static */
 
 typedef struct {
        unsigned long mod;
 
 typedef struct {
        unsigned long mod;
@@ -17,52 +17,10 @@ typedef struct {
        Arg arg;
 } Key;
 
        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)
 
 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);
        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);
                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 (file)
--- a/main.c
+++ b/main.c
@@ -85,9 +85,7 @@ xerrorstart(Display *dsply, XErrorEvent *ee)
 /* extern */
 
 char stext[1024];
 /* 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;
 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 (file)
--- a/tag.c
+++ b/tag.c
@@ -18,24 +18,10 @@ typedef struct {
        Bool isfloat;
 } Rule;
 
        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 */
 
 
 /* extern */