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
|
#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 16) },
{ 0, XK_j, SCRIPT(mouse.sh move down 16) },
{ 0, XK_k, SCRIPT(mouse.sh move up 16) },
{ 0, XK_l, SCRIPT(mouse.sh move right 16) },
{ 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, XK_c, cmd("zsh -c sensible-browser") },
{ Super|ShiftMask, XK_c, cmd("zsh -c sensible-private-browser") },
{ Super, XK_b, cmd("brave") },
{ Super|ControlMask, XK_b, cmd("firefox") },
{ 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_o, SCRIPT(open-project.sh) },
{ 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) },
{ Super|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|AltMask, XK_m, cmd("chelleport") },
{ Super|AltMask, XK_s, cmd("chelleport -m search") },
{ Super|AltMask, XK_t, cmd("dsoys") },
//{ 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";
|