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
|
#include <X11/XF86keysym.h>
// Shell
char shell[] = "/bin/sh";
#define Super Mod4Mask
#define AltMask Mod1Mask
#define SCRIPT(str) cmd("~/scripts/" #str)
#define DWMLAYOUT(str) cmd("dwmc layout " #str)
#define NOOP cmd("")
enum {
MusicPlayer,
Screenshot,
Mouse,
Layout,
// Declare modes above this
MODE_SIZE,
};
// Define mode key bindings here
// NOTE: "10" here is the maximum number of key bindings for each mode
Key modes[MODE_SIZE][20] = {
[Layout] = { // {{{
{ 0, XK_t, DWMLAYOUT(vtile) },
{ 0, XK_h, DWMLAYOUT(htile) },
{ 0, XK_g, DWMLAYOUT(grid) },
{ 0, XK_d, DWMLAYOUT(deck) },
}, // }}}
[MusicPlayer] = { // {{{
{ 0, XK_l, SCRIPT(music/player.sh next) },
{ 0, XK_h, SCRIPT(music/player.sh prev) },
{ 0, XK_space, SCRIPT(music/player.sh play_pause) },
},// }}}
[Screenshot] = { // {{{
{ 0, XK_f, SCRIPT(screenshot.sh full) },
{ 0, XK_p, SCRIPT(screenshot.sh part) },
{ 0, XK_w, SCRIPT(screenshot.sh window) },
},// }}}
[Mouse] = { // {{{
{ 0, XK_h, SCRIPT(mouse.sh move left 30) },
{ 0, XK_j, SCRIPT(mouse.sh move down 30) },
{ 0, XK_k, SCRIPT(mouse.sh move up 30) },
{ 0, XK_l, SCRIPT(mouse.sh move right 30) },
{ 0, XK_Shift_L, NOOP },
{ 0, XK_Shift_R, NOOP },
{ ShiftMask, XK_h, SCRIPT(mouse.sh move left 200) },
{ ShiftMask, XK_j, SCRIPT(mouse.sh move down 200) },
{ ShiftMask, XK_k, SCRIPT(mouse.sh move up 200) },
{ ShiftMask, XK_l, SCRIPT(mouse.sh move right 200) },
{ 0, XK_space, SCRIPT(mouse.sh click) },
// { 0, XK_c, SCRIPT(mouse.sh rclick) },
},// }}}
};
// Define normal mode key bindings here
Key keys[] = {
// Mod Key // Command
// Application {{{
{ Super, XK_Return, cmd("sensible-terminal -d $(xcwd)") },
// { Super|ControlMask, XK_Return, cmd("sensible-terminal") },
// { Super|ShiftMask, XK_Return, cmd("~/.bin/tst -d $(xcwd)") },
{ Super, XK_c, cmd("sensible-browser") },
{ Super|ShiftMask, XK_c, cmd("sensible-private-browser") },
// { Super, XK_b, cmd("sensible-browser") },
// { Super|ShiftMask, XK_b, cmd("sensible-private-browser") },
{ Super, XK_b, cmd("firefox") },
{ Super|ControlMask, XK_b, cmd("brave") },
{ Super|ShiftMask, XK_f, cmd("sensible-terminal -d $(xcwd) -e lf") },
// }}}
// Menus {{{
{ Super, XK_d, cmd("dmenu_run") },
{ Super, XK_semicolon, cmd("dmenu_run -it ':'") },
{ Super|ShiftMask, XK_d, cmd("j4-dmenu-desktop") },
{ Super|ShiftMask, XK_p, cmd("passmenu --type -p 'pass :: '") },
// { Super|ShiftMask, XK_t, SCRIPT(change-tagname.sh) },
{ Super|ShiftMask, XK_o, SCRIPT(open-project.sh) },
// { Super|ShiftMask, XK_i, SCRIPT(bookmarks-menu/bookmarker.sh menu) },
{ Super|ShiftMask, XK_e, SCRIPT(fontawesome-menu/fa-menu.sh menu) },
// }}}
// System {{{
{ 0, XF86XK_PowerOff, SCRIPT(powercontrol.sh menu) },
{ ControlMask, XK_Delete, SCRIPT(powercontrol.sh menu) },
{ ControlMask|ShiftMask, XK_l, SCRIPT(powercontrol.sh lock) },
{ 0, XF86XK_MonBrightnessUp, SCRIPT(brightness.sh inc 10) },
{ 0, XF86XK_MonBrightnessDown, SCRIPT(brightness.sh dec 10) },
{ Super, XK_Print, mode(Screenshot, False) },
// { Super|ControlMask, XK_m, mode(Mouse, True) },
// Ctrl+Click, { ControlMask|AltMask, XK_Tab, cmd("xdotool keydown ctrl click 1 keyup ctrl") }
//{ Super, XK_l, mode(Layout, False) },
// }}}
// Media controls {{{
{ Super|AltMask, XK_m, mode(MusicPlayer, True) },
{ 0, XF86XK_AudioRaiseVolume, SCRIPT(sound.sh volume up) },
{ 0, XF86XK_AudioLowerVolume, SCRIPT(sound.sh volume down) },
{ 0, XF86XK_AudioMute, SCRIPT(sound.sh mute) },
{ 0, XF86XK_AudioMicMute, SCRIPT(sound.sh mute-mic) },
{ 0, XF86XK_AudioNext, SCRIPT(music/player.sh next) },
{ 0, XF86XK_AudioPrev, SCRIPT(music/player.sh prev) },
{ 0, XF86XK_AudioPlay, SCRIPT(music/player.sh play_pause) },
// }}}
// Notifications {{{
{ ControlMask, XK_space, cmd("dunstctl close") },
{ ControlMask|ShiftMask, XK_space, cmd("dunstctl close-all") },
{ ControlMask|ShiftMask, XK_period, cmd("dunstctl context") },
{ ControlMask, XK_grave, cmd("dunstctl history-pop") },
// }}}
};
ModeProperties mode_properties[MODE_SIZE] = {
[MusicPlayer] = { "Music player" },
[Screenshot] = { "Screeshot" },
[Mouse] = { "Mouse control" },
[Layout] = { "Layout" },
};
// Call this script on mode change
char* on_mode_change = "~/scripts/shotkey.sh on-mode-change";
|