aboutsummaryrefslogtreecommitdiffstats
path: root/config.def.h
blob: 385bfa9f3258b03bf2a42a6ee8733d6d8ae10856 (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
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} },
};