all repos — dwm @ a73a88280681acdab047bd11a9ba77d97d6a0b72

my dwm build

centralized/externalized configuration to config.h
arg@10ksloc.org unknown
Tue, 01 Aug 2006 13:59:13 +0200
commit

a73a88280681acdab047bd11a9ba77d97d6a0b72

parent

57416beefec4db451a75a1d25434b69cf50badad

9 files changed, 171 insertions(+), 106 deletions(-)

jump to
M READMEREADME

@@ -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 @@

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.
A 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
A 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
M config.mkconfig.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
M dwm.1dwm.1

@@ -98,7 +98,5 @@ .B window

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.
M dwm.hdwm.h

@@ -4,26 +4,7 @@ * See LICENSE file for license details.

*/ #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)
M event.cevent.c

@@ -8,7 +8,7 @@ #include <stdlib.h>

#include <X11/keysym.h> #include <X11/Xatom.h> -/* CUSTOMIZE */ +/* static */ typedef struct { unsigned long mod;

@@ -17,52 +17,10 @@ void (*func)(Arg *arg);

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 } }, -}; +CMDS +KEYS -#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); } }
M main.cmain.c

@@ -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;
M tag.ctag.c

@@ -18,24 +18,10 @@ char *tags[TLast];

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; +TAGS +RULES -/* END CUSTOMIZE */ +void (*arrange)(Arg *) = ARRANGE; /* extern */