mirror of
https://git.suckless.org/dwm
synced 2024-12-26 10:56:31 +00:00
centralized/externalized configuration to config.h
This commit is contained in:
parent
57416beefe
commit
a73a882806
9 changed files with 171 additions and 106 deletions
8
README
8
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.
|
||||
|
|
76
config.arg.h
Normal file
76
config.arg.h
Normal file
|
@ -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
|
67
config.h
Normal file
67
config.h
Normal file
|
@ -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
|
|
@ -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
|
||||
|
|
6
dwm.1
6
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.
|
||||
|
|
21
dwm.h
21
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)
|
||||
|
|
68
event.c
68
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 };
|
||||
CMDS
|
||||
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 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 @@ 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);
|
||||
}
|
||||
}
|
||||
|
|
4
main.c
4
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;
|
||||
|
|
20
tag.c
20
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},
|
||||
};
|
||||
TAGS
|
||||
RULES
|
||||
|
||||
char *tags[TLast] = {
|
||||
[Tfnord] = "fnord",
|
||||
[Tdev] = "dev",
|
||||
[Tnet] = "net",
|
||||
[Twork] = "work",
|
||||
[Tmisc] = "misc",
|
||||
};
|
||||
|
||||
void (*arrange)(Arg *) = dotile;
|
||||
|
||||
/* END CUSTOMIZE */
|
||||
void (*arrange)(Arg *) = ARRANGE;
|
||||
|
||||
/* extern */
|
||||
|
||||
|
|
Loading…
Reference in a new issue