diff options
author | zachir <zachir@librem.one> | 2025-07-30 14:10:01 -0500 |
---|---|---|
committer | zachir <zachir@librem.one> | 2025-07-30 14:10:01 -0500 |
commit | 3f0bd64725a974578cd2f6894ea08f18c9f72be0 (patch) | |
tree | ecd8a7d84511ee9bfc5c7dc8d4dcaa54e828699b /scroll | |
parent | 437d77fc962e19d6ee4a060b53c390657e2d0ef2 (diff) | |
parent | a1197255ddb1bb14a03e149219bd38d3f95aa382 (diff) |
Merge branch 'master' into cla
Diffstat (limited to 'scroll')
-rw-r--r-- | scroll/config | 7 | ||||
-rw-r--r-- | scroll/scripts/maximize_when_only.lua | 38 |
2 files changed, 44 insertions, 1 deletions
diff --git a/scroll/config b/scroll/config index 29c8cab..fe404c4 100644 --- a/scroll/config +++ b/scroll/config @@ -100,6 +100,8 @@ layout_heights [0.33333333 0.5 0.666666667 1.0] fullscreen_movefocus true +focus_follows_mouse yes + mouse_warping none # Animations @@ -511,7 +513,7 @@ bindsym $mod+Alt+comma exec dmount # Launch dmenuumount dmenu umount script bindsym $mod+Alt+period exec dmenuumount -focus_wrapping no +focus_wrapping yes bindgesture swipe:4:right workspace next bindgesture swipe:4:left workspace prev @@ -521,6 +523,9 @@ bindgesture swipe:4:up scale_workspace overview # Enable window swallowing (of mpv specifically) lua $scripts/swallow.lua +# Enable maximize when only +lua $scripts/maximize_when_only.lua + # Scratchpads for_window [app_id="sphtop"] move scratchpad for_window [app_id="sphtop"] scratchpad show diff --git a/scroll/scripts/maximize_when_only.lua b/scroll/scripts/maximize_when_only.lua new file mode 100644 index 0000000..a047180 --- /dev/null +++ b/scroll/scripts/maximize_when_only.lua @@ -0,0 +1,38 @@ +local args, state = ... + +local maximized_containers = scroll.state_get_value(state, "maximized_containers") or {} + +local debug_notify = function(msg) + scroll.command(nil, "exec notify-send " .. msg) +end + +local maximize_container = function(container, workspace) + local wf = scroll.container_get_width_fraction(container) + local hf = scroll.container_get_height_fraction(container) + maximized_containers[workspace] = { container = container, wf = wf, hf = hf, workspace = workspace } + scroll.state_set_value(state, "maximized_containers", maximized_containers) + scroll.command(container, "set_size h 1.0") + scroll.command(container, "set_size v 1.0") +end + +local maximize_when_only = function() + local focused_workspace = scroll.focused_workspace() + local containers = scroll.workspace_get_tiling(focused_workspace) + local focused_container = scroll.focused_container() + local maximized_container = maximized_containers[focused_workspace] + if #containers == 1 then + if not maximized_container or (maximized_container and maximized_container.container ~= focused_container) then + -- debug_notify("Maximizing") + maximize_container(focused_container, focused_workspace) + end + elseif #containers > 1 and maximized_container then + -- debug_notify("Shrinking") + scroll.command(maximized_container.container, "set_size h " .. maximized_container.wf) + scroll.command(maximized_container.container, "set_size v " .. maximized_container.hf) + maximized_containers[focused_workspace] = nil + scroll.state_set_value(state, "maximized_containers", maximized_containers) + end + scroll.command(focused_container, "nop") +end + +scroll.add_callback("view_focus", maximize_when_only, nil) |