Make all hyprland binds submap universal

This commit is contained in:
2026-05-13 16:57:04 -07:00
parent 848522eca5
commit f86529c063
2 changed files with 105 additions and 82 deletions

View File

@@ -1,8 +1,16 @@
-- Window management
hl.bind("SUPER + Q", hl.dsp.window.close())
local function bind(keys, dispatcher, flags)
if flags == nil then
flags = {}
end
flags.submap_universal = true
hl.bind(keys, dispatcher, flags)
end
hl.bind("SUPER + M", hl.dsp.window.float())
hl.bind("SUPER + M", function ()
-- Window management
bind("SUPER + Q", hl.dsp.window.close())
bind("SUPER + M", hl.dsp.window.float())
bind("SUPER + M", function ()
local monitor = hl.get_active_monitor()
local window = hl.get_active_window()
if (monitor == nil or window == nil) then return end
@@ -13,30 +21,30 @@ hl.bind("SUPER + M", function ()
}))
hl.dispatch(hl.dsp.window.center())
end)
hl.bind("SUPER + F", hl.dsp.window.fullscreen())
hl.bind("SUPER + X", hl.dsp.layout("swapsplit"))
hl.bind("SUPER + B", hl.dsp.layout("togglesplit"))
bind("SUPER + F", hl.dsp.window.fullscreen())
bind("SUPER + X", hl.dsp.layout("swapsplit"))
bind("SUPER + B", hl.dsp.layout("togglesplit"))
hl.bind("SUPER + SPACE", hl.dsp.global("quickshell:peek_bar"))
hl.bind("SUPER + SPACE", hl.dsp.global("quickshell:peek_bar"), {release = true})
hl.bind("SUPER + SUPER_L", hl.dsp.exec_cmd("quickshell ipc call topbar toggle"))
bind("SUPER + SPACE", hl.dsp.global("quickshell:peek_bar"))
bind("SUPER + SPACE", hl.dsp.global("quickshell:peek_bar"), {release = true})
bind("SUPER + SUPER_L", hl.dsp.exec_cmd("quickshell ipc call topbar toggle"))
-- Move/resize windows
hl.bind("SUPER + H", hl.dsp.window.move({direction = "l"}))
hl.bind("SUPER + T", hl.dsp.window.move({direction = "u"}))
hl.bind("SUPER + N", hl.dsp.window.move({direction = "d"}))
hl.bind("SUPER + S", hl.dsp.window.move({direction = "r"}))
hl.bind("SUPER + ALT + H", hl.dsp.window.resize({x = -50, y = 0, relative = true}),
bind("SUPER + H", hl.dsp.window.move({direction = "l"}))
bind("SUPER + T", hl.dsp.window.move({direction = "u"}))
bind("SUPER + N", hl.dsp.window.move({direction = "d"}))
bind("SUPER + S", hl.dsp.window.move({direction = "r"}))
bind("SUPER + ALT + H", hl.dsp.window.resize({x = -50, y = 0, relative = true}),
{repeating = true})
hl.bind("SUPER + ALT + T", hl.dsp.window.resize({x = 0, y = -50, relative = true}),
bind("SUPER + ALT + T", hl.dsp.window.resize({x = 0, y = -50, relative = true}),
{repeating = true})
hl.bind("SUPER + ALT + N", hl.dsp.window.resize({x = 0, y = 50, relative = true}),
bind("SUPER + ALT + N", hl.dsp.window.resize({x = 0, y = 50, relative = true}),
{repeating = true})
hl.bind("SUPER + ALT + S", hl.dsp.window.resize({x = 50, y = 0, relative = true}),
bind("SUPER + ALT + S", hl.dsp.window.resize({x = 50, y = 0, relative = true}),
{repeating = true})
hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), ({mouse = true}))
hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), ({mouse = true}))
bind("SUPER + mouse:272", hl.dsp.window.drag(), ({mouse = true}))
bind("SUPER + mouse:273", hl.dsp.window.resize(), ({mouse = true}))
-- Select windows ordered top to bottom, left to right
local function select_window(n)
@@ -72,59 +80,59 @@ local function swap_window(n)
end
end
hl.bind("SUPER + A", function() focus_window(1) end)
hl.bind("SUPER + O", function() focus_window(2) end)
hl.bind("SUPER + E", function() focus_window(3) end)
hl.bind("SUPER + U", function() focus_window(4) end)
hl.bind("SUPER + SHIFT + A", function() focus_window(5) end)
hl.bind("SUPER + SHIFT + O", function() focus_window(6) end)
hl.bind("SUPER + SHIFT + E", function() focus_window(7) end)
hl.bind("SUPER + SHIFT + U", function() focus_window(8) end)
bind("SUPER + A", function() focus_window(1) end)
bind("SUPER + O", function() focus_window(2) end)
bind("SUPER + E", function() focus_window(3) end)
bind("SUPER + U", function() focus_window(4) end)
bind("SUPER + SHIFT + A", function() focus_window(5) end)
bind("SUPER + SHIFT + O", function() focus_window(6) end)
bind("SUPER + SHIFT + E", function() focus_window(7) end)
bind("SUPER + SHIFT + U", function() focus_window(8) end)
hl.bind("SUPER + ALT + A", function() swap_window(1) end)
hl.bind("SUPER + ALT + O", function() swap_window(2) end)
hl.bind("SUPER + ALT + E", function() swap_window(3) end)
hl.bind("SUPER + ALT + U", function() swap_window(4) end)
hl.bind("SUPER + ALT + SHIFT + A", function() swap_window(5) end)
hl.bind("SUPER + ALT + SHIFT + O", function() swap_window(6) end)
hl.bind("SUPER + ALT + SHIFT + E", function() swap_window(7) end)
hl.bind("SUPER + ALT + SHIFT + U", function() swap_window(8) end)
bind("SUPER + ALT + A", function() swap_window(1) end)
bind("SUPER + ALT + O", function() swap_window(2) end)
bind("SUPER + ALT + E", function() swap_window(3) end)
bind("SUPER + ALT + U", function() swap_window(4) end)
bind("SUPER + ALT + SHIFT + A", function() swap_window(5) end)
bind("SUPER + ALT + SHIFT + O", function() swap_window(6) end)
bind("SUPER + ALT + SHIFT + E", function() swap_window(7) end)
bind("SUPER + ALT + SHIFT + U", function() swap_window(8) end)
-- Workspaces
hl.bind("SUPER + 1", hl.dsp.focus({workspace = 1}))
hl.bind("SUPER + 2", hl.dsp.focus({workspace = 2}))
hl.bind("SUPER + 3", hl.dsp.focus({workspace = 3}))
hl.bind("SUPER + 4", hl.dsp.focus({workspace = 4}))
hl.bind("SUPER + 5", hl.dsp.focus({workspace = 5}))
hl.bind("SUPER + 6", hl.dsp.focus({workspace = 6}))
hl.bind("SUPER + 7", hl.dsp.focus({workspace = 7}))
hl.bind("SUPER + 8", hl.dsp.focus({workspace = 8}))
hl.bind("SUPER + 9", hl.dsp.focus({workspace = 9}))
bind("SUPER + 1", hl.dsp.focus({workspace = 1}))
bind("SUPER + 2", hl.dsp.focus({workspace = 2}))
bind("SUPER + 3", hl.dsp.focus({workspace = 3}))
bind("SUPER + 4", hl.dsp.focus({workspace = 4}))
bind("SUPER + 5", hl.dsp.focus({workspace = 5}))
bind("SUPER + 6", hl.dsp.focus({workspace = 6}))
bind("SUPER + 7", hl.dsp.focus({workspace = 7}))
bind("SUPER + 8", hl.dsp.focus({workspace = 8}))
bind("SUPER + 9", hl.dsp.focus({workspace = 9}))
hl.bind("SUPER + SHIFT + 1", hl.dsp.window.move({workspace = 1, follow = true}))
hl.bind("SUPER + SHIFT + 2", hl.dsp.window.move({workspace = 2, follow = true}))
hl.bind("SUPER + SHIFT + 3", hl.dsp.window.move({workspace = 3, follow = true}))
hl.bind("SUPER + SHIFT + 4", hl.dsp.window.move({workspace = 4, follow = true}))
hl.bind("SUPER + SHIFT + 5", hl.dsp.window.move({workspace = 5, follow = true}))
hl.bind("SUPER + SHIFT + 6", hl.dsp.window.move({workspace = 6, follow = true}))
hl.bind("SUPER + SHIFT + 7", hl.dsp.window.move({workspace = 7, follow = true}))
hl.bind("SUPER + SHIFT + 8", hl.dsp.window.move({workspace = 8, follow = true}))
hl.bind("SUPER + SHIFT + 9", hl.dsp.window.move({workspace = 9, follow = true}))
bind("SUPER + SHIFT + 1", hl.dsp.window.move({workspace = 1, follow = true}))
bind("SUPER + SHIFT + 2", hl.dsp.window.move({workspace = 2, follow = true}))
bind("SUPER + SHIFT + 3", hl.dsp.window.move({workspace = 3, follow = true}))
bind("SUPER + SHIFT + 4", hl.dsp.window.move({workspace = 4, follow = true}))
bind("SUPER + SHIFT + 5", hl.dsp.window.move({workspace = 5, follow = true}))
bind("SUPER + SHIFT + 6", hl.dsp.window.move({workspace = 6, follow = true}))
bind("SUPER + SHIFT + 7", hl.dsp.window.move({workspace = 7, follow = true}))
bind("SUPER + SHIFT + 8", hl.dsp.window.move({workspace = 8, follow = true}))
bind("SUPER + SHIFT + 9", hl.dsp.window.move({workspace = 9, follow = true}))
-- Multi-monitor
hl.bind("SUPER + PERIOD", hl.dsp.focus({monitor = -1}))
hl.bind("SUPER + P", hl.dsp.workspace.move({monitor = -1}))
bind("SUPER + PERIOD", hl.dsp.focus({monitor = -1}))
bind("SUPER + P", hl.dsp.workspace.move({monitor = -1}))
-- Screen locking
hl.bind("SUPER + ESCAPE", hl.dsp.exec_cmd("~/.config/scripts/lock.sh"), {locked = true})
hl.bind("XF86Go", hl.dsp.exec_cmd("~/.config/scripts/idle-toggle.sh"))
hl.bind("switch:on:Lid Switch", hl.dsp.exec_cmd(
bind("SUPER + ESCAPE", hl.dsp.exec_cmd("~/.config/scripts/lock.sh"), {locked = true})
bind("XF86Go", hl.dsp.exec_cmd("~/.config/scripts/idle-toggle.sh"))
bind("switch:on:Lid Switch", hl.dsp.exec_cmd(
"quickshell ipc call lock instalock; sleep 0.5; systemctl suspend"
))
-- Special workspace
hl.bind("SUPER + V", hl.dsp.workspace.toggle_special())
hl.bind("SUPER + W", function ()
bind("SUPER + V", hl.dsp.workspace.toggle_special())
bind("SUPER + W", function ()
if hl.get_active_special_workspace() == nil then
hl.dispatch(hl.dsp.window.move({workspace = "special"}))
else
@@ -133,46 +141,46 @@ hl.bind("SUPER + W", function ()
end)
-- Adjust brightness
hl.bind(
bind(
"XF86MonBrightnessUp",
hl.dsp.global("quickshell:increase_brightness"),
{locked = true, repeating = true}
)
hl.bind(
bind(
"XF86MonBrightnessDown",
hl.dsp.global("quickshell:decrease_brightness"),
{locked = true, repeating = true}
)
hl.bind(
bind(
"SHIFT + XF86MonBrightnessDown",
hl.dsp.exec_cmd("brillo -S 0% -q -u 1000000"),
{locked = true, repeating = true}
)
-- Adjust volume and media
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd(
bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd(
"pactl set-sink-volume @DEFAULT_SINK@ +1%"
))
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd(
bind("XF86AudioLowerVolume", hl.dsp.exec_cmd(
"pactl set-sink-volume @DEFAULT_SINK@ -1%"
))
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("quickshell ipc call osd open"))
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("quickshell ipc call osd open"))
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("playerctl next"))
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("playerctl play-pause"))
bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("quickshell ipc call osd open"))
bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("quickshell ipc call osd open"))
bind("XF86AudioMicMute", hl.dsp.exec_cmd("playerctl next"))
bind("XF86AudioMute", hl.dsp.exec_cmd("playerctl play-pause"))
-- Screen capturing
hl.bind("SUPER + COMMA", hl.dsp.exec_cmd(
bind("SUPER + COMMA", hl.dsp.exec_cmd(
"pgrep slurp || hyprshot -o ~/Pictures/Screenshots -z -s -m region"
))
hl.bind("SUPER + ALT + COMMA", hl.dsp.exec_cmd(
bind("SUPER + ALT + COMMA", hl.dsp.exec_cmd(
"pgrep slurp || hyprshot -o ~/Pictures/Screenshots -z -s -m window"
))
hl.bind("SUPER + SHIFT + COMMA", hl.dsp.exec_cmd(
bind("SUPER + SHIFT + COMMA", hl.dsp.exec_cmd(
"pgrep slurp || hyprshot -o ~/Pictures/Screenshots -z -s -m active -m output"
))
local zoom = false
hl.bind("SUPER + SEMICOLON", function ()
bind("SUPER + SEMICOLON", function ()
if zoom then
hl.config({cursor = {zoom_factor = 1.0}})
zoom = false
@@ -181,13 +189,13 @@ hl.bind("SUPER + SEMICOLON", function ()
zoom = true
end
end)
hl.bind("SHIFT + XF86Display", hl.dsp.exec_cmd("~/.config/scripts/vnc-toggle.sh"))
hl.bind("XF86Display", hl.dsp.exec_cmd("pkill -x quickshell; quickshell"))
hl.bind("SUPER + D", hl.dsp.exec_cmd("wayscriber --active"))
hl.bind("SUPER + SHIFT + D", hl.dsp.exec_cmd("wl-paste | satty -f -"))
bind("SHIFT + XF86Display", hl.dsp.exec_cmd("~/.config/scripts/vnc-toggle.sh"))
bind("XF86Display", hl.dsp.exec_cmd("pkill -x quickshell; quickshell"))
bind("SUPER + D", hl.dsp.exec_cmd("wayscriber --active"))
bind("SUPER + SHIFT + D", hl.dsp.exec_cmd("wl-paste | satty -f -"))
-- Open favourites
hl.bind("SUPER + G", hl.dsp.exec_cmd("zen-browser"))
hl.bind("SUPER + C", hl.dsp.exec_cmd("vesktop"))
hl.bind("SUPER + R", hl.dsp.exec_cmd("keepassxc"))
hl.bind("SUPER + L", hl.dsp.exec_cmd("kitty"))
bind("SUPER + G", hl.dsp.exec_cmd("zen-browser"))
bind("SUPER + C", hl.dsp.exec_cmd("vesktop"))
bind("SUPER + R", hl.dsp.exec_cmd("keepassxc"))
bind("SUPER + L", hl.dsp.exec_cmd("kitty"))