summaryrefslogtreecommitdiff
path: root/scroll/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scroll/scripts')
-rw-r--r--scroll/scripts/maximize_when_only.lua38
-rw-r--r--scroll/scripts/scratchpad.lua12
2 files changed, 45 insertions, 5 deletions
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)
diff --git a/scroll/scripts/scratchpad.lua b/scroll/scripts/scratchpad.lua
index 6972843..0afaa97 100644
--- a/scroll/scripts/scratchpad.lua
+++ b/scroll/scripts/scratchpad.lua
@@ -6,12 +6,14 @@ local command = nil
for i, arg in ipairs(args) do
if i <= 1 then
id = arg
+ if #args == 1 then
+ command = arg
+ end
elseif i == 2 then
if (arg == "kitty") then
terminal = true
else
command = arg
- --terminal = true
end
elseif (terminal == true) then
command = arg
@@ -19,21 +21,21 @@ for i, arg in ipairs(args) do
end
end
---scroll.command(nil, "exec notify-send \"Spawn command\" \"" .. command .. "\"")
+command = command or "kitty"
local function exists(id)
- local is_in_array = false
+ local is_in_scratchpad = false
local cons = scroll.scratchpad_get_containers()
for _, con in ipairs(cons) do
local views = scroll.container_get_views(con)
for _, view in ipairs(views) do
local app_id = scroll.view_get_app_id(view)
if (app_id == id) then
- is_in_array = true
+ is_in_scratchpad = true
end
end
end
- return is_in_array
+ return is_in_scratchpad
end
local function is_focused(id)