1{ lib, shell }:
2{
3 "$mod" = "SUPER";
4 "$satty" = "satty -f -";
5
6 binde = [
7 # Media binds that can be held and repeated
8 ", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
9 ", XF86MonBrightnessUp, exec, brightnessctl set +5%"
10 ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
11 ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
12 ];
13
14 bind = [
15 "SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox"
16 "$mod, Return, exec, ghostty"
17 "SUPER_SHIFT, E, exit"
18
19 # Media Binds
20 ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
21 ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
22 ", XF86AudioPlay, exec, playerctl play-pause"
23 ", XF86AudioNext, exec, playerctl next"
24 ", XF86AudioPrev, exec, playerctl previous"
25
26 # Workspace binds
27 "$mod, 1, workspace, 01"
28 "SUPER_SHIFT, 1, hy3:movetoworkspace, 01"
29 "$mod, 2, workspace, 02"
30 "SUPER_SHIFT, 2, hy3:movetoworkspace, 02"
31 "$mod, 3, workspace, 03"
32 "SUPER_SHIFT, 3, hy3:movetoworkspace, 03"
33 "$mod, 4, workspace, 04"
34 "SUPER_SHIFT, 4, hy3:movetoworkspace, 04"
35 "$mod, 5, workspace, 05"
36 "SUPER_SHIFT, 5, hy3:movetoworkspace, 05"
37 "$mod, 6, workspace, 06"
38 "SUPER_SHIFT, 6, hy3:movetoworkspace, 06"
39 "$mod, 7, workspace, 07"
40 "SUPER_SHIFT, 7, hy3:movetoworkspace, 07"
41 "$mod, 8, workspace, 08"
42 "SUPER_SHIFT, 8, hy3:movetoworkspace, 08"
43 "$mod, 9, workspace, 09"
44 "SUPER_SHIFT, 9, hy3:movetoworkspace, 09"
45 "$mod, 0, workspace, 10"
46 "SUPER_SHIFT, 0, hy3:movetoworkspace, 10"
47 # Scratchpad
48 "SUPER_SHIFT, -, hy3:movetoworkspace, special:default"
49 "$mod, -, togglespecialworkspace, default"
50
51 # Window Management
52 "SUPER_SHIFT, Up, hy3:movewindow, up, once, visible"
53 "SUPER_SHIFT, K, hy3:movewindow, up, once, visible"
54 "$mod, Up, hy3:movefocus, up, visible, warp"
55 "$mod, K, hy3:movefocus, up, visible, warp"
56
57 "SUPER_SHIFT, Right, hy3:movewindow, right, once, visible"
58 "SUPER_SHIFT, L, hy3:movewindow, right, once, visible"
59 "$mod, Right, hy3:movefocus, right, visible, warp"
60 "$mod, L, hy3:movefocus, right, visible, warp"
61
62 "SUPER_SHIFT, Left, hy3:movewindow, left, once, visible"
63 "SUPER_SHIFT, H, hy3:movewindow, left, once, visible"
64 "$mod, Left, hy3:movefocus, left, visible, warp"
65 "$mod, H, hy3:movefocus, left, visible, warp"
66
67 "SUPER_SHIFT, Down, hy3:movewindow, down, once, visible"
68 "SUPER_SHIFT, J, hy3:movewindow, down, once, visible"
69 "$mod, Down, hy3:movefocus, down, visible, warp"
70 "$mod, J, hy3:movefocus, down, visible, warp"
71
72 "SUPER_SHIFT, Q, killactive"
73 "$mod, F, fullscreen, 0"
74 "$mod, Space, hy3:togglefocuslayer"
75 "SUPER_SHIFT, Space, togglefloating, active"
76
77 # Screenshots
78 "SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty"
79 "SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty"
80 ]
81 ++ lib.optionals (shell == "caelestia") [
82 "$mod, X, global, caelestia:session"
83 "$mod, D, global, caelestia:launcher"
84 ]
85 ++ lib.optionals (shell == "dms") [
86 "$mod, X, exec, dms ipc call powermenu toggle"
87 "SUPER_SHIFT, X, exec, dms ipc call lock lock"
88 "$mod, D, exec, dms ipc call spotlight toggle"
89 ];
90
91 bindm = [
92 "$mod, mouse:272, movewindow"
93 ];
94
95 # Unbind a bunch of default keybinds
96 unbind = [
97 "$mod, C"
98 "$mod, E"
99 "$mod, J"
100 "$mod, M"
101 "$mod, P"
102 "$mod, Q"
103 "$mod, R"
104 "$mod, V"
105 ];
106}