about summary refs log tree commit diff stats
path: root/config.default.h
blob: 387b24fa491dbe4e2d23891eeb91a6d97839608f (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
/*
 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
 * See LICENSE file for license details.
 */

#define TAGS \
const char *tags[] = { "0", "1", "2", "3", "4", NULL };

#define DEFMODE			dotile /* dofloat */
#define DEFTAG			1 /* index */
#define FONT			"fixed"
#define BGCOLOR			"#666699"
#define FGCOLOR			"#eeeeee"
#define BORDERCOLOR		"#9999CC"
#define MODKEY			Mod1Mask
#define MASTERW			60 /* percent */

#define KEYS \
static Key key[] = { \
	/* modifier			key		function	arguments */ \
	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec xterm" } }, \
	{ MODKEY,			XK_Tab,		focusnext,	{ 0 } }, \
	{ MODKEY|ShiftMask,		XK_Tab,		focusprev,	{ 0 } }, \
	{ MODKEY,			XK_Return,	zoom,		{ 0 } }, \
	{ MODKEY,			XK_m,		togglemax,	{ 0 } }, \
	{ MODKEY|ShiftMask,		XK_0,		tag,		{ .i = 0 } }, \
	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 1 } }, \
	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 2 } }, \
	{ MODKEY|ShiftMask,		XK_3,		tag,		{ .i = 3 } }, \
	{ MODKEY|ShiftMask,		XK_4,		tag,		{ .i = 4 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_0,		toggletag,	{ .i = 0 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	{ .i = 1 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	{ .i = 2 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	{ .i = 3 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	{ .i = 4 } }, \
	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
	{ MODKEY,			XK_0,		view,		{ .i = 0 } }, \
	{ MODKEY,			XK_1,		view,		{ .i = 1 } }, \
	{ MODKEY,			XK_2,		view,		{ .i = 2 } }, \
	{ MODKEY,			XK_3,		view,		{ .i = 3 } }, \
	{ MODKEY,			XK_4,		view,		{ .i = 4 } }, \
	{ MODKEY|ControlMask,		XK_0,		toggleview,	{ .i = 0 } }, \
	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 1 } }, \
	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 2 } }, \
	{ MODKEY|ControlMask,		XK_3,		toggleview,	{ .i = 3 } }, \
	{ MODKEY|ControlMask,		XK_4,		toggleview,	{ .i = 4 } }, \
	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
};

/* Query class:instance for regex matching info with following command:
 * xprop | awk -F'"' '/^WM_CLASS/ { printf "%s:%s\n", $4, $2 }'*/
#define RULES \
static Rule rule[] = { \
	/* class:instance regex		tags regex	isfloat */ \
	{ "Firefox.*",			"2",		False }, \
	{ "Gimp.*",			NULL,		True}, \
};
s="p">; bool Passed = true; // set this to false inside any test to indicate failure :(before "End Includes") #define CHECK(X) \ if (Passed && !(X)) { \ cerr << "\nF - " << __FUNCTION__ << "(" << __FILE__ << ":" << __LINE__ << "): " << #X << '\n'; \ Passed = false; \ return; /* Currently we stop at the very first failure. */ \ } #define CHECK_EQ(X, Y) \ if (Passed && (X) != (Y)) { \ cerr << "\nF - " << __FUNCTION__ << "(" << __FILE__ << ":" << __LINE__ << "): " << #X << " == " << #Y << '\n'; \ cerr << " got " << (X) << '\n'; /* BEWARE: multiple eval */ \ Passed = false; \ return; /* Currently we stop at the very first failure. */ \ } :(before "End Reset") Passed = true; :(before "End Commandline Parsing") if (argc > 1 && is_equal(argv[1], "test")) { Run_tests = true; --argc; ++argv; // shift 'test' out of commandline args } :(before "End Main") if (Run_tests) { // Test Runs // we run some tests and then exit; assume no state need be maintained afterward long num_failures = 0; // End Test Run Initialization time_t t; time(&t); cerr << "C tests: " << ctime(&t); for (size_t i=0; i < sizeof(Tests)/sizeof(Tests[0]); ++i) { //? cerr << "running " << Test_names[i] << '\n'; run_test(i); if (Passed) cerr << '.'; else ++num_failures; } cerr << '\n'; // End Tests if (num_failures > 0) { cerr << num_failures << " failure" << (num_failures > 1 ? "s" : "") << '\n'; return 1; } return 0; } :(after "End Main") //: Raise other unrecognized sub-commands as errors. //: We couldn't do this until now because we want `./bootstrap test` to always //: succeed, no matter how many layers are included in the build. cerr << "nothing to do\n"; return 1; :(code) void run_test(size_t i) { if (i >= sizeof(Tests)/sizeof(Tests[0])) { cerr << "no test " << i << '\n'; return; } reset(); // End Test Setup (*Tests[i])(); // End Test Teardown } //: Convenience: run a single test :(before "Globals") // Names for each element of the 'Tests' global, respectively. const string Test_names[] = { #include "test_name_list" // auto-generated; see 'build*' scripts }; :(after "Test Runs") string maybe_single_test_to_run = argv[argc-1]; for (size_t i=0; i < sizeof(Tests)/sizeof(Tests[0]); ++i) { if (Test_names[i] == maybe_single_test_to_run) { run_test(i); if (Passed) cerr << ".\n"; return 0; } } //: A pending test that also serves to put our test harness through its paces. :(code) void test_is_equal() { CHECK(is_equal("", "")); CHECK(!is_equal("", "foo")); CHECK(!is_equal("foo", "")); CHECK(!is_equal("f", "bar")); CHECK(!is_equal("bar", "f")); CHECK(!is_equal("bar", "ba")); CHECK(!is_equal("ba", "bar")); CHECK(is_equal("bar", "bar")); } :(before "End Includes") #include <stdlib.h>