Krolyxon
Commit 4db4778

Branches

Refs →

aurora.confighyprsourcekeybinds.lua

185 lines · 9.0 KB · Lua

1---------------------
2---- KEYBINDINGS ----
3---------------------
4-- See https://wiki.hypr.land/Configuring/Basics/Binds/ for more
5
6hl.bind(mainMod .. " + Return", hl.dsp.exec_cmd(terminal))
7hl.bind(mainMod .. " + SHIFT + X", hl.dsp.window.close())
8hl.bind(mainMod .. " + SHIFT + Q", hl.dsp.exit())
9hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" }))
10hl.bind(mainMod .. " + SHIFT + F", hl.dsp.window.fullscreen({ mode = "maximized", action = "toggle" }))
11
12-- bind = $mainMod SHIFT, R, togglefloating,
13-- Smart Float: Toggle float -> Resize to 90% -> Center
14hl.bind(
15 mainMod .. "+ SHIFT + R",
16 hl.dsp.exec_cmd([[
17 if hyprctl activewindow | grep -q 'floating: 0'; then
18 W=$(hyprctl monitors -j | jq '.[] | select(.focused) | ((.width / .scale) * 0.9) | floor')
19 H=$(hyprctl monitors -j | jq '.[] | select(.focused) | ((.height / .scale) * 0.9) | floor')
20 hyprctl --batch "dispatch hl.dsp.window.float({action='set'}); dispatch hl.dsp.window.resize({x=${W}, y=${H}, relative=false})"
21 hyprctl dispatch "hl.dsp.window.center()"
22 else
23 hyprctl dispatch "hl.dsp.window.float({action='unset'})"
24 fi
25 ]]),
26 { description = "Smart Float" }
27)
28
29------------------
30-- Aurora Shell
31-----------------
32hl.bind(mainMod .. " + c", hl.dsp.exec_cmd("qs -c aurora ipc call shell toggle"))
33hl.bind(mainMod .. " + b", hl.dsp.exec_cmd("qs -c aurora ipc call shell bar"))
34hl.bind(mainMod .. " + SHIFT + b", hl.dsp.exec_cmd("systemctl --user restart aurora-shell"))
35
36hl.bind(mainMod .. " + R", hl.dsp.exec_cmd(menu))
37-- bind = $mainMod SHIFT, P, pseudo, # dwindle
38hl.bind(mainMod .. " + Tab", hl.dsp.window.cycle_next({ next = false }), { repeating = true })
39hl.bind(mainMod .. " + SHIFT + Tab", hl.dsp.exec_cmd("qs -c aurora ipc call shell overview"), { description = "workspace overview" })
40hl.bind(mainMod .. " + grave", hl.dsp.exec_cmd("qs -c aurora ipc call shell chars"), { description = "glyph picker" })
41hl.bind(mainMod .. " + escape", hl.dsp.exec_cmd("qs -c aurora ipc call shell power"))
42hl.bind(mainMod .. " + I", hl.dsp.exec_cmd("qs -c aurora ipc call shell settings ''"), { description = "aurora settings" })
43
44-- Applications
45hl.bind(mainMod .. " + W", hl.dsp.exec_cmd(browser))
46hl.bind("PRINT", hl.dsp.exec_cmd("qs -c aurora ipc call shell shot region"), { description = "screenshot" })
47hl.bind(mainMod .. " + SHIFT + P", hl.dsp.exec_cmd("qs -c aurora ipc call shell shot region"), { description = "screenshot" })
48hl.bind("SHIFT + PRINT", hl.dsp.exec_cmd("ocr"), { description = "ocr a region" })
49hl.bind(mainMod .. " + SHIFT + O", hl.dsp.exec_cmd("ocr"), { description = "ocr a region" })
50
51-- Music Controls
52hl.bind(mainMod .. " + m", hl.dsp.exec_cmd(terminal .. " -e zsh -i -c \"rmptui\""))
53hl.bind(mainMod .. " + SHIFT + m", hl.dsp.exec_cmd("madd </dev/null")) -- stdin is tty1 otherwise: madd would pick fzf
54hl.bind(mainMod .. " + p", hl.dsp.exec_cmd("mpc toggle"))
55hl.bind(mainMod .. " + period", hl.dsp.exec_cmd("mpc seek +10"), { repeating = true })
56hl.bind(mainMod .. " + comma", hl.dsp.exec_cmd("mpc seek -10"), { repeating = true })
57hl.bind(mainMod .. " + SHIFT + period", hl.dsp.exec_cmd("mpc next"))
58hl.bind(mainMod .. " + SHIFT + comma", hl.dsp.exec_cmd("mpc prev"))
59
60-- Swap current focused window with master
61hl.bind(mainMod .. " + space", hl.dsp.layout("swapwithmaster"))
62
63-- Resize windows with h/j/k/l
64hl.bind(mainMod .. " + h", hl.dsp.window.resize({ x = -30, y = 0, relative = true}), { repeating = true })
65hl.bind(mainMod .. " + l", hl.dsp.window.resize({ x = 30, y = 0, relative = true}), { repeating = true })
66hl.bind(mainMod .. " + k", hl.dsp.window.resize({ x = 0, y = -30, relative = true }), { repeating = true })
67hl.bind(mainMod .. " + j", hl.dsp.window.resize({ x = 0, y = 30, relative = true }), { repeating = true })
68
69-- Clipboard menu (cliphist)
70hl.bind(mainMod .. " + v", hl.dsp.exec_cmd("qs -c aurora ipc call shell clip"))
71
72-- -----------------------------------------------------
73-- Workspace switching
74-- -----------------------------------------------------
75
76local mainMod = "SUPER"
77for i = 1, smw.get_amount_of_workspaces() do
78 local n = tostring(i)
79 if n == "10" then n = "0" end -- Optional if you configured 10 workspaces: bind workspace 10 to SUPER + 0
80 -- Switch to the Nth workspace on the currently focused monitor.
81 hl.bind(mainMod .. " +" .. n, smw.workspace(n))
82 -- Move the active window to the Nth workspace on the currently focused monitor silently (no focus change).
83 hl.bind(mainMod .. " + SHIFT +" .. n, smw.move_to_workspace_silent(n))
84end
85
86-- dwm focusmon/tagmon: focus the previous/next monitor, or send the window to its visible workspace (focus stays)
87local function tagmon(dir)
88 return function()
89 local mons = hl.get_monitors()
90 local cur = hl.get_active_monitor()
91 if #mons < 2 or not cur then return end
92 table.sort(mons, function(a, b) return a.id < b.id end)
93 for i, m in ipairs(mons) do
94 if m.id == cur.id then
95 local target = mons[(i - 1 + dir) % #mons + 1]
96 if target.active_workspace then
97 hl.dispatch(hl.dsp.window.move({ workspace = tostring(target.active_workspace.id), follow = false }))
98 end
99 return
100 end
101 end
102 end
103end
104hl.bind(mainMod .. " + Left", hl.dsp.focus({ monitor = "-1" }))
105hl.bind(mainMod .. " + Right", hl.dsp.focus({ monitor = "+1" }))
106hl.bind(mainMod .. " + SHIFT + Left", tagmon(-1))
107hl.bind(mainMod .. " + SHIFT + Right", tagmon(1))
108
109-- Example special workspace (scratchpad)
110hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic"))
111hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
112
113-- Scratchpad like DWM
114hl.on("workspace.created", function(ws)
115 if ws.name == "special:h" and ws.is_empty then hl.exec_cmd(terminal) end
116end)
117hl.bind(mainMod .. " + SHIFT + Return", hl.dsp.workspace.toggle_special("h"))
118
119-- --- Accessibility: Zoom ---
120hl.config({ cursor = { zoom_disable_aa = true } })
121
122hl.bind(
123 "SUPER + equal",
124 function()
125 local z = hl.get_config("cursor.zoom_factor")
126 hl.config({ cursor = { zoom_factor = z * 1.25 } })
127 end,
128 { description = "Zoom In", repeating = true }
129)
130
131hl.bind(
132 "SUPER + minus",
133 function()
134 local z = hl.get_config("cursor.zoom_factor")
135 local nz = z / 1.25
136 if nz < 1.0 then nz = 1.0 end
137 hl.config({ cursor = { zoom_factor = nz } })
138 end,
139 { description = "Zoom Out", repeating = true }
140)
141
142hl.bind(
143 "SUPER + BACKSPACE",
144 function()
145 hl.config({ cursor = { zoom_factor = 1.0 } })
146 end,
147 { description = "Reset Zoom", locked = true }
148)
149
150-- Screen Rotate
151hl.bind(mainMod .. " + CTRL + comma", hl.dsp.exec_cmd("hypr_screen_rotate.py +90"),
152 { locked = true, desc = "Rotate Screen Anti-Clockwise" })
153hl.bind(mainMod .. " + CTRL + period", hl.dsp.exec_cmd("hypr_screen_rotate.py -90"),
154 { locked = true, desc = "Rotate Screen Clockwise" })
155
156-- Scroll through existing workspaces with mainMod + scroll
157hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
158hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
159
160-- Move/resize windows with mainMod + LMB/RMB and dragging
161hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
162hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
163
164-- mainMod + MMB drag: float a tiled window and move it, like dwm
165-- (follow_mouse = 1, so the active window is the one under the cursor)
166hl.bind(mainMod .. " + mouse:274", function()
167 local w = hl.get_active_window()
168 if w and not w.floating then hl.dispatch(hl.dsp.window.float({ action = "set" })) end
169end, { non_consuming = true })
170hl.bind(mainMod .. " + mouse:274", hl.dsp.window.drag(), { mouse = true })
171
172-- Laptop multimedia keys for volume and LCD brightness (brightness goes through aurora for the OSD; it runs ~/.local/bin/brictl)
173hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true })
174hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true })
175hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true })
176hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
177hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("qs -c aurora ipc call shell bright down"), { locked = true, repeating = true })
178hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("qs -c aurora ipc call shell bright up"), { locked = true, repeating = true })
179
180-- Requires playerctl
181hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
182hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
183hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
184hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
185