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 # Super-(literal equals)
75 "$mod, code:21, hy3:togglefocuslayer"
76 # Super-(literal plus)
77 "SUPER_SHIFT, code:21, togglefloating, active"
78
79 # Screenshots
80 "SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty"
81 "SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty"
82 ]
83 ++ lib.optionals (shell == "caelestia") [
84 "$mod, X, global, caelestia:session"
85 ", XF86PowerOff , global, caelestia:session"
86 "$mod, Space, global, caelestia:launcher"
87 ]
88 ++ lib.optionals (shell == "dms") [
89 "$mod, X, exec, dms ipc call powermenu toggle"
90 ", XF86PowerOff ,exec, dms ipc call powermenu toggle"
91 "SUPER_SHIFT, X, exec, dms ipc call lock lock"
92 "$mod, Space, exec, dms ipc call spotlight toggle"
93 ];
94
95 bindm = [
96 "$mod, mouse:272, movewindow"
97 ];
98
99 # Unbind a bunch of default keybinds
100 unbind = [
101 "$mod, C"
102 "$mod, E"
103 "$mod, J"
104 "$mod, M"
105 "$mod, P"
106 "$mod, Q"
107 "$mod, R"
108 "$mod, V"
109 ];
110}