aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 */