aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/wm/config.h
blob: 1f5ba85034f414ac2876854512b7a371dd60c2aa (plain)
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
/* appearance */
CONFIG(int,   sloppyfocus,    1);
CONFIG(int,   borderpixel,    1);
CONFIG(float, rootcolor[],   {0.3, 0.3, 0.3, 1.0});
CONFIG(float, bordercolor[], {0.5, 0.5, 0.5, 1.0});
CONFIG(float, focuscolor[],  {1.0, 0.0, 0.0, 1.0});

/* sampling */
CONFIG(int,   repeat_rate,   25);
CONFIG(int,   repeat_delay,  600);

/* tags */
CONFIG(char*, tags[], { "1", "2", "3", "4", "5", "6", "7", "8", "9" });

/* application specific rules */
CONFIG(Rule, rule[], {
    /* app_id     title       tags mask     isfloating   monitor */
    /* examples:
    { "Gimp",     nil,        0,            1,           -1 },
    { "firefox",  nil,        1 << 8,       0,           -1 },
    */
});
CONFIG(Rule*, endrule, arrend(cfg·rule));

/* commands */
CONFIG(char*, termcommand[], { "alacritty",  nil });
CONFIG(char*, menucommand[], { "dmenu-wl_run",  nil });

/* layouts */
CONFIG(Layout, layouts[], {
    /* symbol     arrange */
    { "[]=",      tile },
    { "><>",      nil  },    /* no layout function means floating behavior */
});
CONFIG(Layout*, endlayout, arrend(cfg·layouts));

/* monitors
 * The order in which monitors are defined determines their position.
 * non-configured monitors are always added to the left. */
CONFIG(MonitorRule, monitorrule[], {
    /* name    layout,       x, y, scale,       transform             master */
    { nil,  &cfg·layouts[0], 0, 0, 1,   WL_OUTPUT_TRANSFORM_NORMAL, {0.55, 1} },
});
CONFIG(MonitorRule*, endmonitorrule, arrend(cfg·monitorrule));

/* keybindings */
#define MODKEY WLR_MODIFIER_ALT
#define MOD(a) WLR_MODIFIER_##a
#define KEY(a) XKB_KEY_##a

CONFIG(Key, binding[], {
    /* modifier                  key               function          argument */
    { MODKEY,                KEY(Return),           spawn,       {.v = cfg·termcommand} },
    { MODKEY,                KEY(d),                spawn,       {.v = cfg·menucommand} },
    { MODKEY|MOD(SHIFT),     KEY(Q),                quit,        {.v = nil} },
});
CONFIG(Key*, endbinding, arrend(cfg·binding));

#undef MOD
#undef KEY

/* mouse buttons */
CONFIG(Button, button[], {
    { MODKEY, BTN_LEFT,   move_client,     {0} },
    { MODKEY, BTN_MIDDLE, float_client,    {0} },
    { MODKEY, BTN_RIGHT,  resize_client,   {0} },
});
CONFIG(Button*, endbutton, arrend(cfg·button));

#undef MODKEY