aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/dwm/config.h
blob: d2af108f2e4da7ec2c0294910f4d062c89c5b2a4 (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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/* See LICENSE file for copyright and license details. */
#define VERSION  "1"
#define DWM_PIPE "DWM_PIPE"

/* appearance */
static uint borderpx          = 1;        /* border pixel of windows */
static uint gapx              = 4;        /* gaps between windows */
static uint snap              = 32;       /* snap pixel */
static int  swallowfloating   = 0;        /* 1 will swallow floating by default */
static int  showbar           = 1;        /* 0 means no bar */
static int  topbar            = 1;        /* 0 means bottom bar */
static char *fonts[]          = { "consolas:size=12" };
static char col_gray1[]       = "#504945";
static char col_gray2[]       = "#282828";
static char col_gray3[]       = "#fbf1c7";
static char col_gray4[]       = "#504945";
static char col_cyan[]        = "#83a598";
static char *colors[][3]      = 
{
	/*               fg         bg         border   */
	[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
	[SchemeSel]  = { col_gray4, col_cyan,  col_cyan  },
};

/* tagging */
static char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };

static Rule rules[] = {
	/* xprop(1):
	 *	WM_CLASS(STRING) = instance, class
	 *	WM_NAME(STRING) = title
	 */
	/* class         instance    title       tags mask     isfloating   isterminal    noswallow      monitor */
	{ "Gimp",          nil,       nil,        0,            1,           0,           0,              -1 },
	{ "Inkscape",      nil,       nil,        0,            1,           0,           0,              -1 },
	{ "qutebrowser",   nil,       nil,        0,            0,           0,           0,              -1 },
	{ "term-256color", nil,       nil,        0,            0,           1,          -1,              -1 },
};

/* layout(s) */
static float mfact     = 0.55; /* factor of master area size [0.05..0.95] */
static int nmaster     = 1;    /* number of clients in master area */
static int resizehints = 1;    /* 1 means respect size hints in tiled resizals */

static Layout layouts[] = {
	/* symbol     arrange function */
	{ "[]=",      tile },    /* first entry is default */
	{ "><>",      nil },     /* no layout function means floating behavior */
	{ "[M]",      monocle },
};

/* 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} },

/* commands */
static char *menucmd[]  = { "menu_run", nil };
static char *termcmd[]  = { "term", nil };
static char *webscmd[]  = { "qutebrowser", nil };
static char scratchname[] = "scratchpad";
static char *scratchcmd[] = { "term", "-t", scratchname, "-g", "120x34", nil };
static char *upvolcmd[] = { "vol", "+5%",  nil };
static char *lovolcmd[] = { "vol", "-5%",  nil };
static char *novolcmd[] = { "vol", "mute", nil };

#define XK_lovol XF86XK_AudioLowerVolume
#define XK_upvol XF86XK_AudioRaiseVolume
#define XK_novol XF86XK_AudioMute

static Key keys[] = {
	/* modifier                     key        function        argument */
	{ MODKEY,                       XK_d,      spawn,          {.v = menucmd } },
	{ MODKEY,                       XK_Return, spawn,          {.v = termcmd } },
	{ MODKEY,                       XK_q,      spawn,          {.v = webscmd } },
	{ 0,                            XK_upvol,  spawn,          {.v = upvolcmd} },
	{ 0,                            XK_lovol,  spawn,          {.v = lovolcmd} },
	{ 0,                            XK_novol,  spawn,          {.v = novolcmd} },
	{ MODKEY,                       XK_s,      togglescratch,  {.v = scratchcmd} },
	{ MODKEY,                       XK_b,      togglebar,      {0} },
	{ MODKEY,                       XK_f,      togglefocus,    {0} },
	{ MODKEY,                       XK_Up,     focusstack,     {.i = +1 } },
	{ MODKEY,                       XK_Down,   focusstack,     {.i = -1 } },
	{ MODKEY|ShiftMask,             XK_Up,     rotatestack,    {.i = +1 } },
	{ MODKEY|ShiftMask,             XK_Down,   rotatestack,    {.i = -1 } },
	{ MODKEY,                       XK_i,      incnmaster,     {.i = +1 } },
	{ MODKEY,                       XK_o,      incnmaster,     {.i = -1 } },
	{ MODKEY,                       XK_h,      focusdirection, {.i = 'l'} },
	{ MODKEY,                       XK_l,      focusdirection, {.i = 'r'} },
	{ MODKEY,                       XK_k,      focusdirection, {.i = 'u'} },
	{ MODKEY,                       XK_j,      focusdirection, {.i = 'd'} },
	{ MODKEY|ShiftMask,             XK_h,      setmfact,       {.f = -0.05} },
	{ MODKEY|ShiftMask,             XK_l,      setmfact,       {.f = +0.05} },
	{ MODKEY|ShiftMask,             XK_k,      rotatestack,    {.i = -1 } },
	{ MODKEY|ShiftMask,             XK_j,      rotatestack,    {.i = +1 } },
	{ MODKEY|ShiftMask,             XK_Return, zoom,           {0} },
	{ MODKEY,                       XK_Tab,    view,           {0} },
	{ MODKEY|ShiftMask,             XK_q,      killclient,     {0} },
	{ MODKEY|ShiftMask,             XK_t,      setlayout,      {.v = &layouts[0]} },
	{ MODKEY|ShiftMask,             XK_f,      setlayout,      {.v = &layouts[1]} },
	{ MODKEY|ShiftMask,             XK_m,      setlayout,      {.v = &layouts[2]} },
	{ MODKEY,                       XK_space,  setlayout,      {0} },
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
	{ MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } },
	{ MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },
	{ MODKEY,                       XK_period, focusmon,       {.i = +1 } },
	{ MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
	{ MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
	TAGKEYS(                        XK_1,                      0)
	TAGKEYS(                        XK_2,                      1)
	TAGKEYS(                        XK_3,                      2)
	TAGKEYS(                        XK_4,                      3)
	TAGKEYS(                        XK_5,                      4)
	TAGKEYS(                        XK_6,                      5)
	TAGKEYS(                        XK_7,                      6)
	TAGKEYS(                        XK_8,                      7)
	TAGKEYS(                        XK_9,                      8)
	{ MODKEY|ShiftMask,             XK_e,      quit,           {0} },
};

/* button definitions */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static Button buttons[] = {
	/* click                event mask      button          function        argument */
	{ ClkLtSymbol,          0,              Button1,        setlayout,      {0} },
	{ ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &layouts[2]} },
	{ ClkWinTitle,          0,              Button2,        zoom,           {0} },
	{ ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },
	{ ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },
	{ ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
	{ ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },
	{ ClkTagBar,            0,              Button1,        view,           {0} },
	{ ClkTagBar,            0,              Button3,        toggleview,     {0} },
	{ ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
	{ ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
};