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
|
{config, ...}: {
home-manager.users.${config.user} = {
wayland.windowManager.hyprland.settings = {
# Keybinds
"$mod" = "SUPER";
bind = [
# Launch programs
"$mod, W, exec, ${config.default.browser}"
"$mod, D, exec, ${config.default.appLauncher}"
"$mod, L, exec, ${config.default.lockScreen}"
"$mod, Return, exec, ${config.default.terminal}"
", Print, exec, grimblast copy area"
# Misc
"$mod SHIFT, L, exit"
"$mod, tab, hyprexpo:expo, toggle"
# Window operations
"$mod SHIFT, Q, killactive"
"$mod SHIFT, SPACE, togglefloating"
"$mod, F, fullscreen"
"$mod, J, togglesplit"
# Move focus with mod + arrow keys
"$mod, left, movefocus, l"
"$mod, right, movefocus, r"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
# Move window across workspace with mod + arrow keys
"$mod SHIFT, left, hy3:movewindow, l"
"$mod SHIFT, right, hy3:movewindow, r"
"$mod SHIFT, up, hy3:movewindow, u"
"$mod SHIFT, down, hy3:movewindow, d"
# Switch workspaces with mod + [0-9]
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
# Move active window to a workspace with mod + SHIFT + [0-9]
"$mod SHIFT, 1, movetoworkspacesilent, 1"
"$mod SHIFT, 2, movetoworkspacesilent, 2"
"$mod SHIFT, 3, movetoworkspacesilent, 3"
"$mod SHIFT, 4, movetoworkspacesilent, 4"
"$mod SHIFT, 5, movetoworkspacesilent, 5"
"$mod SHIFT, 6, movetoworkspacesilent, 6"
"$mod SHIFT, 7, movetoworkspacesilent, 7"
"$mod SHIFT, 8, movetoworkspacesilent, 8"
"$mod SHIFT, 9, movetoworkspacesilent, 9"
"$mod SHIFT, 0, movetoworkspacesilent, 10"
# Move to tab
"LALT, 1, hy3:focustab, index, 01"
"LALT, 2, hy3:focustab, index, 02"
"LALT, 3, hy3:focustab, index, 03"
"LALT, 4, hy3:focustab, index, 04"
"LALT, 5, hy3:focustab, index, 05"
"LALT, 6, hy3:focustab, index, 06"
"LALT, 7, hy3:focustab, index, 07"
"LALT, 8, hy3:focustab, index, 08"
"LALT, 9, hy3:focustab, index, 09"
"LALT, 0, hy3:focustab, index, 10"
"$mod SHIFT, B, hy3:makegroup, h"
"$mod SHIFT, V, hy3:makegroup, v"
"$mod SHIFT, C, hy3:changegroup, toggletab"
# Scroll through existing workspaces with mod + scroll
"$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1"
];
bindn = [
# Focus windows with scroll wheel or middle click
", mouse:272, hy3:focustab, mouse"
", mouse_down, hy3:focustab, l, require_hovered"
", mouse_up, hy3:focustab, r, require_hovered"
];
bindm = [
# Move/resize windows with mod + LMB/RMB and dragging
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
binde = [
# Audio
# raise volume
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
# lower volume
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
# mute speaker
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
# mute mic
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
# Media
# play
", XF86AudioPlay, exec, playerctl play-pause"
# next
", XF86AudioNext, exec, playerctl next"
# prev
", XF86AudioPrev, exec, playerctl previous"
# Backlight
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
", XF86MonBrightnessUp, exec, brightnessctl set 5%+"
];
bindl = let
monitor = builtins.elemAt config.monitors 0;
cfg = "highres, auto, ${toString monitor.scale}, bitdepth, ${toString monitor.bitdepth}";
in [
# Laptops when docked
", switch:on:Lid, exec, hyprctl keyword monitor \"${monitor.name}, disable\""
", switch:off:Lid, exec, hyprctl keyword monitor \"${monitor.name}, ${cfg}\""
];
};
};
}
|