aboutsummaryrefslogtreecommitdiff
path: root/config.h
blob: cacd785729fd3043573bb0e1128cdeeead655d87 (plain) (blame)
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
#include <X11/XF86keysym.h>

// Shell
char shell[] = "/bin/sh";

#define Super Mod4Mask

#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_c,         DWMLAYOUT(centered) },
    { 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|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_p,                        cmd("passmenu --type -p 'pass :: '") },
  { Super|ShiftMask,            XK_o,                        SCRIPT(open-project.sh) },
  { Super|ShiftMask,            XK_i,                        SCRIPT(bookmarks-menu/bookmarker.sh menu) },
  { Super|ShiftMask,            XK_g,                        SCRIPT(bookmarks-menu/gh-projects.sh menu) },
  { Super|ShiftMask,            XK_e,                        SCRIPT(fontawesome-menu/fa-menu.sh menu) },
  { Super,                      XK_y,                        cmd("clipmenu") },
  // }}}

  // System {{{
  { 0,                          XF86XK_PowerOff,             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) },
  { Super,                      XK_l,                        mode(Layout, False) },
  // }}}

  // Media controls {{{
  { Super,                      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) },
  // }}}
};

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";