diff --git a/dotfiles/config/hypr/hyprland/binds.lua b/dotfiles/config/hypr/hyprland/binds.lua index 433ea65f..36912dfa 100644 --- a/dotfiles/config/hypr/hyprland/binds.lua +++ b/dotfiles/config/hypr/hyprland/binds.lua @@ -241,8 +241,7 @@ function M.setup(ctx) bind(main_mod .. " + bracketleft", monocle_prev, desc("Focus previous monocle window")) bind(main_mod .. " + F", toggle_active_window_real_fullscreen, desc("Toggle active window real fullscreen")) bind(main_mod .. " + SHIFT + F", toggle_active_window_gaming_mode, desc("Toggle active window gaming fullscreen")) - bind(main_mod .. " + T", hl.dsp.window.float({ action = "disable" }), desc("Tile active window")) - bind(main_mod .. " + SHIFT + T", float_active_window_to_default_scratchpad_geometry, desc("Float active window to scratchpad size")) + bind(main_mod .. " + T", tile_or_float_active_window, desc("Tile or float active window")) bind(main_mod .. " + O", toggle_pinned_active_window, desc("Toggle pinned active window")) bind(main_mod .. " + M", minimize_active_window, desc("Minimize active window")) bind(main_mod .. " + SHIFT + M", restore_last_minimized, desc("Restore last minimized window")) diff --git a/dotfiles/config/hypr/hyprland/windows.lua b/dotfiles/config/hypr/hyprland/windows.lua index 8b2cb736..ffdd47ef 100644 --- a/dotfiles/config/hypr/hyprland/windows.lua +++ b/dotfiles/config/hypr/hyprland/windows.lua @@ -145,6 +145,21 @@ function M.setup(ctx) dispatch(hl.dsp.window.move({ x = geometry.x, y = geometry.y, relative = false, window = selector })) end + local function tile_or_float_active_window() + local window = hl.get_active_window() + local selector = window_selector(window) + if not selector then + return + end + + if window.floating then + dispatch(hl.dsp.window.float({ action = "disable", window = selector })) + return + end + + float_active_window_to_default_scratchpad_geometry() + end + local function toggle_pinned_active_window() local window = hl.get_active_window() local selector = window_selector(window) @@ -607,6 +622,7 @@ function M.setup(ctx) ctx.float_and_drag_active_window = float_and_drag_active_window ctx.float_and_resize_active_window = float_and_resize_active_window ctx.float_active_window_to_default_scratchpad_geometry = float_active_window_to_default_scratchpad_geometry + ctx.tile_or_float_active_window = tile_or_float_active_window ctx.toggle_pinned_active_window = toggle_pinned_active_window ctx.current_minimized_windows = current_minimized_windows ctx.restore_minimized_window = restore_minimized_window