-- Window management hl.bind("SUPER + Q", hl.dsp.window.close()) hl.bind("SUPER + M", hl.dsp.window.float()) hl.bind("SUPER + M", hl.dsp.window.center()) hl.bind("SUPER + F", hl.dsp.window.fullscreen()) 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")) hl.bind("SUPER + K", hl.dsp.layout("movetoroot")) hl.bind("SUPER + B", hl.dsp.layout("togglesplit")) hl.bind("SUPER + x", hl.dsp.layout("swapsplit")) -- Select windows ordered top to bottom, left to right local function focus_window(n) local workspace = hl.get_active_special_workspace() if workspace == nil then workspace = hl.get_active_workspace() end local windows = hl.get_windows({workspace = workspace}) table.sort( windows, function (a, b) if a.at.x < b.at.x then return true end if a.at.x > b.at.x then return false end return a.at.y < b.at.y end ) if windows[n] ~= nil then hl.dispatch(hl.dsp.focus({window = windows[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) -- 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})) 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})) -- Special workspace hl.bind("SUPER + V", hl.dsp.workspace.toggle_special()) hl.bind("SUPER + W", hl.dsp.window.move({workspace = -1})) -- Move/resize windows hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), ({mouse = true})) hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), ({mouse = true})) -- Multi-monitor hl.bind("SUPER + PERIOD", hl.dsp.focus({monitor = -1})) hl.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( "quickshell ipc call lock instalock; sleep 0.5; systemctl suspend" )) -- Adjust brightness hl.bind( "XF86MonBrightnessUp", hl.dsp.global("quickshell:increase_brightness"), {locked = true, repeating = true} ) hl.bind( "XF86MonBrightnessDown", hl.dsp.global("quickshell:decrease_brightness"), {locked = true, repeating = true} ) hl.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( "pactl set-sink-volume @DEFAULT_SINK@ +1%" )) hl.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")) -- Screen capturing hl.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( "pgrep slurp || hyprshot -o ~/Pictures/Screenshots -z -s -m window" )) hl.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 () if zoom then hl.config({cursor = {zoom_factor = 1.0}}) zoom = false else hl.config({cursor = {zoom_factor = 3.0}}) 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 -")) -- 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"))