about summary refs log tree commit diff stats
path: root/config.arg.h
blob: dfb9e1f5bce901eef00b177b24d1d483d54753c5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
 * See LICENSE file for license details.
 */

#define TAGS \
const char *tags[] = { "dev", "work", "net", "fnord", NULL };

#define DEFMODE			dotile		/* dofloat */
#define FLOATSYMBOL		"><>"
#define STACKPOS		StackRight	/* StackLeft, StackBottom */
#define TILESYMBOL		"[]="
#define VERTICALSTACK		True		/* False == horizontal stack  */

#define FONT			"-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*"
#define NORMBGCOLOR		"#333333"
#define NORMFGCOLOR		"#dddddd"
#define SELBGCOLOR		"#333366"
#define SELFGCOLOR		"#eeeeee"
#define STATUSBGCOLOR		"#222222"
#define STATUSFGCOLOR		"#9999cc"

#define MASTER			60 /* percent */
#define MODKEY			Mod1Mask

#define KEYS \
static Key key[] = { \
	/* modifier			key		function	arguments */ \
	{ MODKEY|ShiftMask,		XK_Return,	spawn, \
		{ .cmd = "exec uxterm -bg '#111111' -fg '#eeeeee' -cr '#eeeeee' +sb -fn '"FONT"'" } }, \
	{ MODKEY,			XK_p,		spawn, \
		{ .cmd = "exe=\"$(IFS=:; for dir in $PATH; do " \
			 "for file in \"$dir\"/*; do [ -x \"$file\" ] && echo \"${file##*/}\"; done; done " \
			 "| sort -u | dmenu -font '"FONT"' -normbg '"NORMBGCOLOR"' -normfg '"NORMFGCOLOR"' " \
			 "-selbg '"SELBGCOLOR"' -selfg '"SELFGCOLOR"')\" && exec $exe" } }, \
	{ MODKEY,			XK_j,		focusnext,	{ 0 } }, \
	{ MODKEY,			XK_k,		focusprev,	{ 0 } }, \
	{ MODKEY,			XK_Return,	zoom,		{ 0 } }, \
	{ MODKEY,			XK_b,		togglestackpos,	{ 0 } }, \
	{ MODKEY,			XK_d,		togglestackdir,	{ 0 } }, \
	{ MODKEY,			XK_g,		resizecol,	{ .i = 20 } }, \
	{ MODKEY,			XK_s,		resizecol,	{ .i = -20 } }, \
	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
	{ MODKEY|ShiftMask,		XK_3,		tag,		{ .i = 2 } }, \
	{ MODKEY|ShiftMask,		XK_4,		tag,		{ .i = 3 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	{ .i = 0 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	{ .i = 1 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	{ .i = 2 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	{ .i = 3 } }, \
	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
	{ MODKEY,			XK_0,		viewall,	{ 0 } }, \
	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
	{ MODKEY,			XK_3,		view,		{ .i = 2 } }, \
	{ MODKEY,			XK_4,		view,		{ .i = 3 } }, \
	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 0 } }, \
	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 1 } }, \
	{ MODKEY|ControlMask,		XK_3,		toggleview,	{ .i = 2 } }, \
	{ MODKEY|ControlMask,		XK_4,		toggleview,	{ .i = 3 } }, \
	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
};

#define RULES \
static Rule rule[] = { \
	/* class:instance:title regex	tags regex	isfloat */ \
	{ "Firefox.*",			"net",		True}, \
	{ "Gimp.*",			NULL,		True}, \
	{ "MPlayer.*",			NULL,		True}, \
	{ "Acroread.*",			NULL,		True}, \
};
0 12 <- 1 13 <- 2 ] ] # create an array out of a list of args def new-array -> result:&:@:_elem [ local-scope capacity:num <- copy 0 { # while read curr-value curr-value:_elem, exists?:bool <- next-input break-unless exists? capacity <- add capacity, 1 loop } result <- new _elem:type, capacity rewind-inputs i:num <- copy 0 { # while read curr-value done?:bool <- greater-or-equal i, capacity break-if done? curr-value:_elem, exists?:bool <- next-input assert exists?, [error in rewinding inputs to new-array] *result <- put-index *result, i, curr-value i <- add i, 1 loop } return result ] # fill an existing array with a set of numbers # (contributed by Caleb Couch) def fill array:&:@:num -> array:&:@:num [ local-scope load-inputs loopn:num <- copy 0 length:num <- length *array { length?:bool <- equal loopn, length break-if length? object:num, arg-received?:bool <- next-input break-unless arg-received? *array <- put-index *array, loopn, object loopn <- add loopn, 1 loop } ] scenario fill-on-an-empty-array [ local-scope array:&:@:num <- new number:type, 3 run [ array <- fill array, 1 2 3 10:@:num/raw <- copy *array ] memory-should-contain [ 10 <- 3 11 <- 1 12 <- 2 13 <- 3 ] ] scenario fill-overwrites-existing-values [ local-scope array:&:@:num <- new number:type, 3 *array <- put-index *array, 0, 4 run [ array <- fill array, 1 2 3 10:@:num/raw <- copy *array ] memory-should-contain [ 10 <- 3 11 <- 1 12 <- 2 13 <- 3 ] ] scenario fill-exits-gracefully-when-given-no-inputs [ local-scope array:&:@:num <- new number:type, 3 run [ array <- fill array 10:@:num/raw <- copy *array ] memory-should-contain [ 10 <- 3 11 <- 0 12 <- 0 13 <- 0 ] ] # swap two elements of an array # (contributed by Caleb Couch) def swap array:&:@:num, index1:num, index2:num -> array:&:@:num [ local-scope load-inputs object1:num <- index *array, index1 object2:num <- index *array, index2 *array <- put-index *array, index1, object2 *array <- put-index *array, index2, object1 ] scenario swap-works [ local-scope array:&:@:num <- new number:type, 4 array <- fill array, 4 3 2 1 run [ array <- swap array, 0, 2 10:num/raw <- index *array, 0 11:num/raw <- index *array, 2 ] memory-should-contain [ 10 <- 2 11 <- 4 ] ] # reverse the elements of an array # (contributed by Caleb Couch) def reverse array:&:@:_elem -> array:&:@:_elem [ local-scope load-inputs start:num <- copy 0 length:num <- length *array end:num <- subtract length, 1 { done?:bool <- greater-or-equal start, end break-if done? array <- swap array, start, end start <- add start, 1 end <- subtract end, 1 loop } ] scenario reverse-array-odd-length [ local-scope array:&:@:num <- new number:type, 3 array <- fill array, 3 2 1 run [ array <- reverse array 10:@:num/raw <- copy *array ] memory-should-contain [ 10 <- 3 11 <- 1 12 <- 2 13 <- 3 ] ] scenario reverse-array-even-length [ local-scope array:&:@:num <- new number:type, 4 array <- fill array, 4 3 2 1 run [ array <- reverse array 10:@:num/raw <- copy *array ] memory-should-contain [ 10 <- 4 11 <- 1 12 <- 2 13 <- 3 14 <- 4 ] ]