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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
static const unsigned int borderpx = 2;
static const unsigned int snap = 32;
static const int showbar = 1;
static const int topbar = 1;
static const char *barlayout = "sn|t";
static const int user_bh = 28;
static const char *fonts[] = { "Noto Sans:size=14" };
static const unsigned int gappih = 12; /* horiz inner gap between windows */
static const unsigned int gappiv = 8; /* vert inner gap between windows */
static const unsigned int gappoh = 12; /* horiz outer gap between windows and screen edge */
static const unsigned int gappov = 8; /* vert outer gap between windows and screen edge */
static int smartgaps = 1; /* 1 means no outer gap when there is only one window */
static const char *colors[][4] = {
/* fg bg border float */
[SchemeNorm] = { "#CDD6F4", "#181825", "#313244", "#FAB387" },
[SchemeSel] = { "#181825", "#CBA6F7", "#CBA6F7", "#A6E3A1" },
};
static const char *tags[] = { "V", "W", "X", "Y", "Z" };
static const Rule rules[] = {
/* class instance title tags mask isfloating monitor */
{ "librewolf", NULL, NULL, 1 << 1, 0, -1 },
};
/* layout(s) */
static const float mfact = 0.50; /* factor of master area size [0.05..0.95] */
static const int nmaster = 1; /* number of clients in master area */
static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
#define FORCE_VSPLIT 1 /* nrowgrid layout: force two clients to always split vertically */
#include "vanitygaps.c"
static const Layout layouts[] = {
{ "TILE", tile },
{ "SPIRAL", spiral },
{ "GRID", grid },
};
/* key definitions */
#define MODKEY Mod4Mask
#define TAGKEYS(KEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, \
{ Mod1Mask|ShiftMask, KEY, swaptags, {.ui = 1 << TAG} },
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
/* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
static const char *dmenucmd[] = { "dmenu_run", NULL };
static const char *termcmd[] = { "st", NULL };
void shiftAndViewLeft(const Arg *arg) {
tagtoleft(arg);
viewtoleft(arg);
}
void shiftAndViewRight(const Arg *arg) {
tagtoright(arg);
viewtoright(arg);
}
static const Key keys[] = {
/* tag keys (for all the tag functions defined in TAGKEYS macro) */
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
TAGKEYS( XK_9, 3)
TAGKEYS( XK_0, 4)
/* basic WM functions */
{ MODKEY, XK_backslash, togglebar, {0} },
{ MODKEY, XK_w, killclient, {0} },
{ MODKEY|ShiftMask, XK_q, quit, {0} },
/* launch programs and shit */
{ MODKEY, XK_Return, spawn, {.v = termcmd} },
{ MODKEY|ShiftMask, XK_s, spawn, {.v = dmenucmd} },
/* viewing and moving to adjacent tags */
{ Mod1Mask, XK_h, viewtoleft, {0} },
{ Mod1Mask, XK_l, viewtoright, {0} },
{ Mod1Mask|ShiftMask, XK_h, shiftAndViewLeft, {0} },
{ Mod1Mask|ShiftMask, XK_l, shiftAndViewRight, {0} },
/* layouts */
{ MODKEY, XK_equal, cyclelayout, {.i = -1 } },
{ MODKEY, XK_plus, togglefloating, {0} },
// { MODKEY|ControlMask, XK_period, cyclelayout, {.i = +1 } },
// { MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
/* tiling window management */
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_Tab, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY|ShiftMask, XK_Tab, focusstack, {.i = -1 } },
{ MODKEY|ShiftMask, XK_f, zoom, {0} },
};
static const Button buttons[] = {
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
};
|