forked from yaocccc/dwm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.h
234 lines (206 loc) · 20.2 KB
/
config.h
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
#include <X11/XF86keysym.h>
static int showsystray = 1; /* 是否显示托盘栏 */
static const int newclientathead = 0; /* 定义新窗口在栈顶还是栈底 */
static const unsigned int borderpx = 2; /* 窗口边框大小 */
static const unsigned int systraypinning = 1; /* 托盘跟随的显示器 0代表不指定显示器 */
static const unsigned int systrayspacing = 1; /* 托盘间距 */
static const unsigned int systrayspadding = 5; /* 托盘和状态栏的间隙 */ static int gappi = 12; /* 窗口与窗口 缝隙大小 */
static int gappo = 12; /* 窗口与边缘 缝隙大小 */
static const int _gappo = 12; /* 窗口与窗口 缝隙大小 不可变 用于恢复时的默认值 */
static const int _gappi = 12; /* 窗口与边缘 缝隙大小 不可变 用于恢复时的默认值 */
static const int vertpad = 5; /* vertical padding of bar */
static const int sidepad = 5; /* horizontal padding of bar */
static const int overviewgappi = 24; /* overview时 窗口与边缘 缝隙大小 */
static const int overviewgappo = 60; /* overview时 窗口与窗口 缝隙大小 */
static const int showbar = 1; /* 是否显示状态栏 */
static const int topbar = 1; /* 指定状态栏位置 0底部 1顶部 */
static const float mfact = 0.6; /* 主工作区 大小比例 */
static const int nmaster = 1; /* 主工作区 窗口数量 */
static const unsigned int snap = 10; /* 边缘依附宽度 */
static const unsigned int baralpha = 0xc0; /* 状态栏透明度 */
static const unsigned int borderalpha = 0xdd; /* 边框透明度 */
static const char *fonts[] = { "DejaVu Sans Light:style=ExtraLight:size=18", "JoyPixels:style=Regular:pixelsize=18:antialias=true:autohint=true" };
//static const char *fonts[] = { "JetBrainsMono Nerd Font:style=Regular:pixelsize=18:antialias=true:autohint=true" };
static const char *colors[][3] = { /* 颜色设置 ColFg, ColBg, ColBorder */
[SchemeNorm] = { "#bbbbbb", "#333333", "#444444" },
[SchemeSel] = { "#ffffff", "#37474F", "#42A5F5" },
[SchemeSelGlobal] = { "#ffffff", "#37474F", "#FFC0CB" },
[SchemeHid] = { "#dddddd", NULL, NULL },
[SchemeSystray] = { NULL, "#7799AA", NULL },
[SchemeUnderline] = { "#7799AA", NULL, NULL },
[SchemeNormTag] = { "#bbbbbb", "#333333", NULL },
[SchemeSelTag] = { "#eeeeee", "#333333", NULL },
[SchemeBarEmpty] = { NULL, "#111111", NULL },
};
static const unsigned int alphas[][3] = { /* 透明度设置 ColFg, ColBg, ColBorder */
[SchemeNorm] = { OPAQUE, baralpha, borderalpha },
[SchemeSel] = { OPAQUE, baralpha, borderalpha },
[SchemeSelGlobal] = { OPAQUE, baralpha, borderalpha },
[SchemeNormTag] = { OPAQUE, baralpha, borderalpha },
[SchemeSelTag] = { OPAQUE, baralpha, borderalpha },
[SchemeBarEmpty] = { NULL, 0x11, NULL },
[SchemeStatusText] = { OPAQUE, 0x88, NULL },
};
/* 自定义脚本位置 */
static const char *autostartscript = "$DWM/autostart.sh";
static const char *statusbarscript = "$DWM/statusbar/statusbar.sh";
/* 自定义 scratchpad instance */
static const char scratchpadname[] = "scratchpad";
/* 自定义tag名称 */
/* 自定义特定实例的显示状态 */
// ﮸ ﭮ 切
static const char *tags[] = {
"", // tag:0 key:1 desc:terminal1
"", // tag:1 key:2 desc:terminal2
"", // tag:2 key:3 desc:terminal3
"", // tag:3 key:c desc:chrome
"", // tag:4 key:5 desc:zotero
"", // tag:5 key:m desc:music
"", // tag:6 key:7 desc:qq
"", // tag:7 key:w desc:game
"", // tag:8 key:9 desc:vscode
};
/* 自定义窗口显示规则 */
/* class instance title 主要用于定位窗口适合哪个规则 */
/* tags mask 定义符合该规则的窗口的tag 0 表示当前tag */
/* isfloating 定义符合该规则的窗口是否浮动 */
/* isglobal 定义符合该规则的窗口是否全局浮动 */
/* isnoborder 定义符合该规则的窗口是否无边框 */
/* monitor 定义符合该规则的窗口显示在哪个显示器上 -1 为当前屏幕 */
/* floatposition 定义符合该规则的窗口显示的位置 0 中间,1到9分别为9宫格位置,例如1左上,9右下,3右上 */
static const Rule rules[] = {
/* class instance title tags mask isfloating isglobal isnoborder monitor floatposition */
/** 优先级高 越在上面优先度越高 */
{ NULL, NULL, "图片查看器", 0, 1, 0, 0, -1, 0}, // qq图片查看器 浮动
{ NULL, NULL, "图片查看", 0, 1, 0, 0, -1, 0}, // 微信图片查看器 浮动
/** 普通优先度 */
{"microsoft-edge-stable",NULL, NULL, 1 << 4, 0, 0, 0, -1, 0}, // chrome tag ->
{"zotero", NULL, NULL, 1 << 5, 0, 0, 0, -1, 0}, // chrome tag ->
{"music", NULL, NULL, 1 << 6, 1, 0, 1, -1, 0}, // music tag -> 浮动、无边框
{"flameshot", NULL, NULL, 0, 1, 0, 0, -1, 0}, // 火焰截图 浮动
{"scratchpad", "scratchpad", "scratchpad", TAGMASK, 1, 1, 1, -1, 2}, // scratchpad 浮动、全局、无边框 屏幕顶部
/** 部分特殊class的规则 */
{"float", NULL, NULL, 0, 1, 0, 0, -1, 0}, // class = float 浮动
{"global", NULL, NULL, TAGMASK, 0, 1, 0, -1, 0}, // class = gloabl 全局
{"noborder", NULL, NULL, 0, 0, 0, 1, -1, 0}, // class = noborder 无边框
{"FGN", NULL, NULL, TAGMASK, 1, 1, 1, -1, 0}, // class = FGN 浮动、全局、无边框
{"FG", NULL, NULL, TAGMASK, 1, 1, 0, -1, 0}, // class = FG 浮动、全局
{"FN", NULL, NULL, 0, 1, 0, 1, -1, 0}, // class = FN 浮动、无边框
{"GN", NULL, NULL, TAGMASK, 0, 1, 1, -1, 0}, // CLASS = GN 全局、无边框
/** 优先度低 越在上面优先度越低 */
{ NULL, NULL, "crx_", 0, 1, 0, 0, -1, 0}, // 错误载入时 会有crx_ 浮动
{ NULL, NULL, "broken", 0, 1, 0, 0, -1, 0}, // 错误载入时 会有broken 浮动
};
static const char *overviewtag = "OVERVIEW";
static const Layout overviewlayout = { "舘", overview };
/* 自定义布局 */
static const Layout layouts[] = {
{ "", tile }, /* 主次栈 */
{ "", magicgrid }, /* 网格 */
};
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
#define MODKEY Mod1Mask
#define TAGKEYS(KEY, TAG, cmd) \
{ MODKEY, KEY, view, {.ui = 1 << TAG, .v = cmd} }, \
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
static Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_equal, togglesystray, {0} }, /* ALT + | 切换 托盘栏显示状态 */
{ MODKEY, XK_j, focusstack, {.i = -1} }, /* ALT up | 本tag内切换聚焦窗口 */
{ MODKEY, XK_k, focusstack, {.i = +1} }, /* ALT down | 本tag内切换聚焦窗口 */
{ MODKEY, XK_Left, viewtoleft, {0} }, /* ALT left | 聚焦到左边的tag */
{ MODKEY, XK_Right, viewtoright, {0} }, /* ALT right | 聚焦到右边的tag */
{ MODKEY|ShiftMask, XK_Left, tagtoleft, {0} }, /* ALT shift left | 将本窗口移动到左边tag */
{ MODKEY|ShiftMask, XK_Right, tagtoright, {0} }, /* ALT shift right | 将本窗口移动到右边tag */
{ MODKEY, XK_a, toggleoverview, {0} }, /* ALT a | 显示所有tag 或 跳转到聚焦窗口的tag */
{ MODKEY, XK_h, setmfact, {.f = -0.05} }, /* ALT h | 缩小主工作区 */
{ MODKEY, XK_l, setmfact, {.f = +0.05} }, /* ALT l | 放大主工作区 */
{ MODKEY, XK_i, hidewin, {0} }, /* ALT i | 隐藏 窗口 */
{ MODKEY|ShiftMask, XK_i, restorewin, {0} }, /* ALT shift i | 取消隐藏 窗口 */
{ MODKEY|ShiftMask, XK_Return, zoom, {0} }, /* ALT shift enter | 将当前聚焦窗口置为主窗口 */
{ MODKEY, XK_t, togglefloating, {0} }, /* ALT t | 开启/关闭 聚焦目标的float模式 */
{ MODKEY|ShiftMask, XK_t, toggleallfloating,{0} }, /* ALT shift t | 开启/关闭 全部目标的float模式 */
{ MODKEY, XK_f, fullscreen, {0} }, /* ALT f | 开启/关闭 全屏 */
{ MODKEY|ShiftMask, XK_f, togglebar, {0} }, /* ALT shift f | 开启/关闭 状态栏 */
{ MODKEY, XK_g, toggleglobal, {0} }, /* ALT g | 开启/关闭 全局 */
{ MODKEY, XK_u, toggleborder, {0} }, /* ALT u | 开启/关闭 边框 */
{ MODKEY, XK_e, incnmaster, {.i = +1} }, /* ALT e | 改变主工作区窗口数量 (1 2中切换) */
{ MODKEY, XK_b, focusmon, {.i = +1} }, /* ALT b | 光标移动到另一个显示器 */
{ MODKEY|ShiftMask, XK_b, tagmon, {.i = +1} }, /* ALT shift b | 将聚焦窗口移动到另一个显示器 */
{ MODKEY, XK_q, killclient, {0} }, /* ALT q | 关闭窗口 */
{ MODKEY|ControlMask, XK_q, forcekillclient, {0} }, /* ALT ctrl q | 强制关闭窗口(处理某些情况下无法销毁的窗口) */
{ MODKEY|ShiftMask, XK_q, quit, {0} }, /* ALT ctrl f12 | 退出dwm */
{ Mod4Mask, XK_Return, selectlayout, {.v = &layouts[1]} }, /* super space | 切换到网格布局 */
{ Mod4Mask, XK_o, showonlyorall, {0} }, /* ALT o | 切换 只显示一个窗口 / 全部显示 */
{ Mod4Mask, XK_equal, setgap, {.i = -6} }, /* ALT ctrl + | 窗口增大 */
{ Mod4Mask, XK_minus, setgap, {.i = +6} }, /* ALT ctrl - | 窗口减小 */
{ Mod4Mask, XK_space, setgap, {.i = 0} }, /* ALT ctrl space | 窗口重置 */
{ Mod4Mask, XK_k, movewin, {.ui = UP} }, /* ALT ctrl up | 移动窗口 */
{ Mod4Mask, XK_j, movewin, {.ui = DOWN} }, /* ALT ctrl down | 移动窗口 */
{ Mod4Mask, XK_h, movewin, {.ui = LEFT} }, /* ALT ctrl left | 移动窗口 */
{ Mod4Mask, XK_l, movewin, {.ui = RIGHT} }, /* ALT ctrl right | 移动窗口 */
{ Mod4Mask|ControlMask, XK_j, resizewin, {.ui = V_REDUCE} }, /* ALT super up | 调整窗口 */
{ Mod4Mask|ControlMask, XK_k, resizewin, {.ui = V_EXPAND} }, /* ALT super down | 调整窗口 */
{ Mod4Mask|ControlMask, XK_h, resizewin, {.ui = H_REDUCE} }, /* ALT super left | 调整窗口 */
{ Mod4Mask|ControlMask, XK_l, resizewin, {.ui = H_EXPAND} }, /* ALT super right | 调整窗口 */
/* { Mod4Mask, XK_k, focusdir, {.i = UP } }, /* ALT k | 二维聚焦窗口 */
/* { Mod4Mask, XK_j, focusdir, {.i = DOWN } }, /* ALT j | 二维聚焦窗口 */
/* { Mod4Mask, XK_h, focusdir, {.i = LEFT } }, /* ALT h | 二维聚焦窗口 */
/* { Mod4Mask, XK_l, focusdir, {.i = RIGHT } }, /* ALT l | 二维聚焦窗口 */
/* { Mod4Mask|ShiftMask, XK_k, exchange_client, {.i = UP } }, /* ALT shift k | 二维交换窗口 (仅平铺) */
/* { Mod4Mask|ShiftMask, XK_j, exchange_client, {.i = DOWN } }, /* ALT shift j | 二维交换窗口 (仅平铺) */
/* { Mod4Mask|ShiftMask, XK_h, exchange_client, {.i = LEFT} }, /* ALT shift h | 二维交换窗口 (仅平铺) */
/* { Mod4Mask|ShiftMask, XK_l, exchange_client, {.i = RIGHT } }, /* ALT shift l | 二维交换窗口 (仅平铺) */
/* spawn + SHCMD 执行对应命令(已下部分建议完全自己重新定义) */
{ MODKEY, XK_s, togglescratch, SHCMD("st -t scratchpad -c float") }, /* ALT s | 打开scratch终端 */
{ MODKEY, XK_Return, spawn, SHCMD("st") }, /* ALT enter | 打开st终端 */
{ MODKEY, XK_minus, spawn, SHCMD("st -c FG") }, /* ALT + | 打开全局st终端 */
{ MODKEY, XK_space, spawn, SHCMD("st -c float") }, /* ALT space | 打开浮动st终端 */
{ MODKEY, XK_d, spawn, SHCMD("rofi -show run") }, /* ALT d | rofi: 执行run */
{ MODKEY, XK_p, spawn, SHCMD("$DWM/scripts/rofi.sh") }, /* ALT p | rofi: 执行自定义脚本 */
{ MODKEY|ShiftMask, XK_Up, spawn, SHCMD("$DWM/scripts/set_vol.sh up") }, /* ALT shift up | 音量加 */
{ MODKEY|ShiftMask, XK_Down, spawn, SHCMD("$DWM/scripts/set_vol.sh down") }, /* ALT shift down | 音量减 */
{ MODKEY|ShiftMask, XK_a, spawn, SHCMD("flameshot gui -c -p ~/pictures/screenshots") }, /* ALT shift a | 截图 */
{ MODKEY|ShiftMask, XK_q, spawn, SHCMD("kill -9 $(xprop | grep _NET_WM_PID | awk '{print $3}')") }, /* ALT shift q | 选中某个窗口并强制kill */
{ Mod4Mask, XK_l, spawn, SHCMD("betterlockscreen -l blur") }, /* ALT shift q | 选中某个窗口并强制kill */
/* ALT key : 跳转到对应tag (可附加一条命令 若目标目录无窗口,则执行该命令) */
/* ALT shift key : 将聚焦窗口移动到对应tag */
/* key tag cmd */
TAGKEYS(XK_1, 0, 0)
TAGKEYS(XK_2, 1, 0)
TAGKEYS(XK_3, 2, 0)
TAGKEYS(XK_4, 3, 0)
TAGKEYS(XK_5, 4, 0)
TAGKEYS(XK_6, 5, 0)
TAGKEYS(XK_7, 6, 0)
TAGKEYS(XK_8, 7, 0)
TAGKEYS(XK_9, 8, 0)
TAGKEYS(XK_c, 3, "microsoft-edge-stable")
TAGKEYS(XK_z, 4, "zotero")
};
static Button buttons[] = {
/* click event mask button function argument */
/* 点击窗口标题栏操作 */
{ ClkWinTitle, 0, Button1, hideotherwins, {0} }, // 左键 | 点击标题 | 隐藏其他窗口仅保留该窗口
{ ClkWinTitle, 0, Button3, togglewin, {0} }, // 右键 | 点击标题 | 切换窗口显示状态
/* 点击窗口操作 */
{ ClkClientWin, MODKEY, Button1, movemouse, {0} }, // ALT+左键 | 拖拽窗口 | 拖拽窗口
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} }, // ALT+右键 | 拖拽窗口 | 改变窗口大小
/* 点击tag操作 */
{ ClkTagBar, 0, Button1, view, {0} }, // 左键 | 点击tag | 切换tag
{ ClkTagBar, 0, Button3, toggleview, {0} }, // 右键 | 点击tag | 切换是否显示tag
{ ClkTagBar, MODKEY, Button1, tag, {0} }, // ALT+左键 | 点击tag | 将窗口移动到对应tag
{ ClkTagBar, 0, Button4, viewtoleft, {0} }, // 鼠标滚轮上 | tag | 向前切换tag
{ ClkTagBar, 0, Button5, viewtoright, {0} }, // 鼠标滚轮下 | tag | 向后切换tag
/* 点击状态栏操作 */
{ ClkStatusText, 0, Button1, clickstatusbar,{0} }, // 左键 | 点击状态栏 | 根据状态栏的信号执行 ~/scripts/dwmstatusbar.sh $signal L
{ ClkStatusText, 0, Button2, clickstatusbar,{0} }, // 中键 | 点击状态栏 | 根据状态栏的信号执行 ~/scripts/dwmstatusbar.sh $signal M
{ ClkStatusText, 0, Button3, clickstatusbar,{0} }, // 右键 | 点击状态栏 | 根据状态栏的信号执行 ~/scripts/dwmstatusbar.sh $signal R
{ ClkStatusText, 0, Button4, clickstatusbar,{0} }, // 鼠标滚轮上 | 状态栏 | 根据状态栏的信号执行 ~/scripts/dwmstatusbar.sh $signal U
{ ClkStatusText, 0, Button5, clickstatusbar,{0} }, // 鼠标滚轮下 | 状态栏 | 根据状态栏的信号执行 ~/scripts/dwmstatusbar.sh $signal D
//
/* 点击bar空白处 */
{ ClkBarEmpty, 0, Button1, spawn, SHCMD("$DWM/scripts/call_rofi.sh window") }, // 左键 | bar空白处 | rofi 执行 window
{ ClkBarEmpty, 0, Button3, spawn, SHCMD("$DWM/scripts/call_rofi.sh drun") }, // 右键 | bar空白处 | rofi 执行 drun
};