diff --git a/hypr/hyprland/binds.lua b/hypr/hyprland/binds.lua index 06aaf25..6420be1 100644 --- a/hypr/hyprland/binds.lua +++ b/hypr/hyprland/binds.lua @@ -87,9 +87,10 @@ bind("SUPER + mouse:272", hl.dsp.window.drag(), ({mouse = true})) bind("SUPER + mouse:273", hl.dsp.window.resize(), ({mouse = true})) -- Window management -bind('SUPER + SEMICOLON', hl.dsp.window.fullscreen()) -bind('SUPER + Q', hl.dsp.window.close()) -bind('SUPER + J', function() +bind('SUPER + APOSTROPHE', hl.dsp.window.close()) +bind('SUPER + COMMA', hl.dsp.window.fullscreen()) +bind('SUPER + PERIOD', function() + -- Float window, resize to 90%, and center it hl.dispatch(hl.dsp.window.float()) local monitor = hl.get_active_monitor() local window = hl.get_active_window() @@ -101,22 +102,23 @@ bind('SUPER + J', function() })) hl.dispatch(hl.dsp.window.center()) end) -bind('SUPER + K', hl.dsp.layout('togglesplit')) -bind('SUPER + X', hl.dsp.layout('swapsplit')) +bind('SUPER + P', hl.dsp.layout('togglesplit')) +bind('SUPER + Y', hl.dsp.layout('swapsplit')) -- Special workspace -bind("SUPER + APOSTROPHE", function () +bind("SUPER + SEMICOLON", function () if hl.get_active_special_workspace() == nil then hl.dispatch(hl.dsp.window.move({workspace = "special"})) else hl.dispatch(hl.dsp.window.move({workspace = hl.get_active_workspace()})) end end) -bind('SUPER + COMMA', hl.dsp.workspace.toggle_special()) +bind('SUPER + Q', hl.dsp.workspace.toggle_special()) -- Multi monitor -bind("SUPER + PERIOD", hl.dsp.focus({monitor = -1})) -bind("SUPER + SHIFT + PERIOD", hl.dsp.window.move({monitor = -1})) +bind("SUPER + J", hl.dsp.focus({monitor = -1})) +bind("SUPER + SHIFT + J", hl.dsp.window.move({monitor = -1})) +bind('SUPER + K', hl.dsp.workspace.move({monitor = -1})) -- Screen locking bind("SUPER + ESCAPE", hl.dsp.exec_cmd("~/.config/scripts/lock.sh"), {locked = true}) @@ -132,15 +134,14 @@ bind("SUPER + R", hl.dsp.exec_cmd("keepassxc")) bind("SUPER + L", hl.dsp.exec_cmd("kitty")) -- Screen capturing -local zoom = false +local zoom = 1 bind("SUPER + Z", function() - if zoom then - hl.config({cursor = {zoom_factor = 1.0, invisible = false}}) - zoom = false - else - hl.config({cursor = {zoom_factor = 3.0, invisible = true}}) - zoom = true - end + zoom = zoom + 1 + hl.config({cursor = {zoom_factor = zoom, invisible = true}}) +end) +bind ("SUPER + SHIFT + Z", function() + zoom = 1 + hl.config({cursor = {zoom_factor = 1, invisible = false}}) end) bind('SUPER + V', hl.dsp.exec_cmd( @@ -191,3 +192,7 @@ 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"), {device = {inclusive = false, list = {"zikway-hid-gamepad-keyboard"}}}) bind("SUPER + SUPER_R", hl.dsp.workspace.toggle_special(), {device = {inclusive = true, list = {"zikway-hid-gamepad-keyboard"}}}) + +-- Global back and forward binds +bind('ALT + SLASH', hl.dsp.send_shortcut({mods = 'ALT', key = 'LEFT'})) +bind('ALT + EQUAL', hl.dsp.send_shortcut({mods = 'ALT', key = 'RIGHT'})) diff --git a/hypr/hyprland/rules.lua b/hypr/hyprland/rules.lua index d4872c4..65eee72 100644 --- a/hypr/hyprland/rules.lua +++ b/hypr/hyprland/rules.lua @@ -4,6 +4,32 @@ hl.workspace_rule({ workspace = "f[1]s[false]", gaps_out = 0, gaps_in = 0 }) hl.window_rule({ match = { float = false, workspace = "w[tv1]s[false]" }, border_size = 0 }) hl.window_rule({ match = { float = false, workspace = "f[1]s[false]" }, border_size = 0 }) +-- For multiple monitors +function map_monitors() + local monitor_priority = { + ["eDP-1"] = -1 + } + local monitors = hl.get_monitors() + local nmonitors = #monitors + table.sort(monitors, function(a, b) + return (monitor_priority[a.name] or 0) > (monitor_priority[b.name] or 0) + end) + local workspace = 9 + for i, monitor in ipairs(monitors) do + local lower_workspace = workspace + 1 - math.floor(9/nmonitors) + if i == nmonitors then + lower_workspace = 1 + end + for j = workspace, lower_workspace, -1 do + hl.workspace_rule({workspace = tostring(j), monitor = monitor.name}) + end + workspace = lower_workspace - 1 + end +end +map_monitors() +hl.on('monitor.added', map_monitors) +hl.on('monitor.removed', map_monitors) + -- Special workspace hl.workspace_rule({ workspace = "s[true]", gaps_out = 64, gaps_in = 12})