centralized/externalized configuration to config.h
parent
57416beefe
commit
a73a882806
8
README
8
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
|
The configuration of dwm is done by editing config.h.
|
||||||
(grep for the CUSTOMIZE keyword).
|
|
||||||
|
|
|
@ -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
|
|
@ -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
|
LIBS = -L/usr/lib -lc -L${X11LIB} -lX11
|
||||||
|
|
||||||
# flags
|
# 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}
|
#LDFLAGS = -g ${LIBS}
|
||||||
|
|
||||||
# compiler
|
# compiler
|
||||||
|
@ -22,3 +22,6 @@ CC = cc
|
||||||
|
|
||||||
# dwm version
|
# dwm version
|
||||||
VERSION = 0.6
|
VERSION = 0.6
|
||||||
|
|
||||||
|
# default config.h
|
||||||
|
CONFIG = config.h
|
||||||
|
|
6
dwm.1
6
dwm.1
|
@ -98,7 +98,5 @@ Resizes current
|
||||||
while dragging
|
while dragging
|
||||||
.SH CUSTOMIZATION
|
.SH CUSTOMIZATION
|
||||||
.B dwm
|
.B dwm
|
||||||
is customized through editing its source code. This keeps it fast, secure and
|
is customized through editing config.h of the source code. This keeps it fast,
|
||||||
simple. The source code contains the
|
secure and simple.
|
||||||
.I CUSTOMIZE
|
|
||||||
keyword to highlight relevant portions for customization.
|
|
||||||
|
|
21
dwm.h
21
dwm.h
|
@ -4,26 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
#include CONFIG
|
||||||
/* 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 */
|
|
||||||
|
|
||||||
/* mask shorthands, used in event.c and client.c */
|
/* mask shorthands, used in event.c and client.c */
|
||||||
#define ButtonMask (ButtonPressMask | ButtonReleaseMask)
|
#define ButtonMask (ButtonPressMask | ButtonReleaseMask)
|
||||||
|
|
64
event.c
64
event.c
|
@ -8,7 +8,7 @@
|
||||||
#include <X11/keysym.h>
|
#include <X11/keysym.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
|
|
||||||
/* CUSTOMIZE */
|
/* static */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned long mod;
|
unsigned long mod;
|
||||||
|
@ -17,52 +17,10 @@ typedef struct {
|
||||||
Arg arg;
|
Arg arg;
|
||||||
} Key;
|
} Key;
|
||||||
|
|
||||||
const char *browse[] = { "firefox", NULL };
|
CMDS
|
||||||
const char *gimp[] = { "gimp", NULL };
|
KEYS
|
||||||
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[] = {
|
static unsigned int valid_mask = 255 & ~(NUMLOCKMASK | LockMask);
|
||||||
/* 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 void
|
static void
|
||||||
movemouse(Client *c)
|
movemouse(Client *c)
|
||||||
|
@ -381,19 +339,13 @@ grabkeys()
|
||||||
for(i = 0; i < len; i++) {
|
for(i = 0; i < len; i++) {
|
||||||
code = XKeysymToKeycode(dpy, key[i].keysym);
|
code = XKeysymToKeycode(dpy, key[i].keysym);
|
||||||
XUngrabKey(dpy, code, key[i].mod, root);
|
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,
|
XGrabKey(dpy, code, key[i].mod, root, True,
|
||||||
GrabModeAsync, GrabModeAsync);
|
GrabModeAsync, GrabModeAsync);
|
||||||
if (NumLockMask)
|
XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK, root, True,
|
||||||
{
|
|
||||||
XGrabKey(dpy, code, key[i].mod | NumLockMask, root, True,
|
|
||||||
GrabModeAsync, GrabModeAsync);
|
GrabModeAsync, GrabModeAsync);
|
||||||
XGrabKey(dpy, code, key[i].mod | NumLockMask | LockMask, root, True,
|
XGrabKey(dpy, code, key[i].mod | NUMLOCKMASK | LockMask, root, True,
|
||||||
GrabModeAsync, GrabModeAsync);
|
GrabModeAsync, GrabModeAsync);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
4
main.c
4
main.c
|
@ -85,9 +85,7 @@ xerrorstart(Display *dsply, XErrorEvent *ee)
|
||||||
/* extern */
|
/* extern */
|
||||||
|
|
||||||
char stext[1024];
|
char stext[1024];
|
||||||
/* CUSTOMIZE */
|
int tsel = DEFTAG;
|
||||||
int tsel = Tdev; /* default tag */
|
|
||||||
/* END CUSTOMIZE */
|
|
||||||
int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
|
int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
|
||||||
Atom wmatom[WMLast], netatom[NetLast];
|
Atom wmatom[WMLast], netatom[NetLast];
|
||||||
Bool running = True;
|
Bool running = True;
|
||||||
|
|
20
tag.c
20
tag.c
|
@ -18,24 +18,10 @@ typedef struct {
|
||||||
Bool isfloat;
|
Bool isfloat;
|
||||||
} Rule;
|
} Rule;
|
||||||
|
|
||||||
/* CUSTOMIZE */
|
TAGS
|
||||||
static Rule rule[] = {
|
RULES
|
||||||
/* class:instance tags isfloat */
|
|
||||||
{ "Firefox.*", { [Tnet] = "net" }, False },
|
|
||||||
{ "Gimp.*", { 0 }, True},
|
|
||||||
};
|
|
||||||
|
|
||||||
char *tags[TLast] = {
|
void (*arrange)(Arg *) = ARRANGE;
|
||||||
[Tfnord] = "fnord",
|
|
||||||
[Tdev] = "dev",
|
|
||||||
[Tnet] = "net",
|
|
||||||
[Twork] = "work",
|
|
||||||
[Tmisc] = "misc",
|
|
||||||
};
|
|
||||||
|
|
||||||
void (*arrange)(Arg *) = dotile;
|
|
||||||
|
|
||||||
/* END CUSTOMIZE */
|
|
||||||
|
|
||||||
/* extern */
|
/* extern */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue