dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit a73a88280681acdab047bd11a9ba77d97d6a0b72
parent 57416beefec4db451a75a1d25434b69cf50badad
Author: arg@10ksloc.org <unknown>
Date:   Tue,  1 Aug 2006 13:59:13 +0200

centralized/externalized configuration to config.h

Diffstat:
MREADME | 8++++++--
Aconfig.arg.h | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfig.h | 67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mconfig.mk | 7+++++--
Mdwm.1 | 6++----
Mdwm.h | 21+--------------------
Mevent.c | 68++++++++++----------------------------------------------------------
Mmain.c | 4+---
Mtag.c | 22++++------------------
9 files changed, 172 insertions(+), 107 deletions(-)
diff --git 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 */