summaryrefslogtreecommitdiff
path: root/scroll/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scroll/scripts')
-rw-r--r--scroll/scripts/maximize.lua42
-rw-r--r--scroll/scripts/scratchpad.lua64
-rw-r--r--scroll/scripts/swallow.lua32
3 files changed, 138 insertions, 0 deletions
diff --git a/scroll/scripts/maximize.lua b/scroll/scripts/maximize.lua
new file mode 100644
index 0000000..f0df156
--- /dev/null
+++ b/scroll/scripts/maximize.lua
@@ -0,0 +1,42 @@
+local args, state = ...
+
+-- Set up views table
+local views = scroll.state_get_value(state, "views")
+if views == nil then
+ scroll.state_set_value(state, "views", {})
+ views = scroll.state_get_value(state, "views")
+end
+
+local function find_view(view)
+ for _, v in ipairs(views) do
+ if v["object"] == view then
+ return v
+ end
+ end
+ return nil
+end
+
+if args[1] == 'toggle' then
+ local focused_view = scroll.focused_view()
+ local view = find_view(focused_view)
+ if view == nil then
+ view = {
+ object = focused_view,
+ maximized = false,
+ wf = 0,
+ hf = 0
+ }
+ table.insert(views, view)
+ end
+ view["maximized"] = not view["maximized"]
+ if view["maximized"] then
+ local container = scroll.view_get_container(focused_view)
+ view["wf"] = scroll.container_get_width_fraction(container)
+ view["hf"] = scroll.container_get_height_fraction(container)
+ scroll.command(nil, "set_size h 1.0")
+ scroll.command(nil, "set_size v 1.0")
+ else
+ scroll.command(nil, "set_size h " .. view["wf"])
+ scroll.command(nil, "set_size v " .. view["hf"])
+ end
+end
diff --git a/scroll/scripts/scratchpad.lua b/scroll/scripts/scratchpad.lua
new file mode 100644
index 0000000..6972843
--- /dev/null
+++ b/scroll/scripts/scratchpad.lua
@@ -0,0 +1,64 @@
+local args, _ = ...
+local id = ""
+local terminal = false
+local command = nil
+
+for i, arg in ipairs(args) do
+ if i <= 1 then
+ id = arg
+ elseif i == 2 then
+ if (arg == "kitty") then
+ terminal = true
+ else
+ command = arg
+ --terminal = true
+ end
+ elseif (terminal == true) then
+ command = arg
+ break
+ end
+end
+
+--scroll.command(nil, "exec notify-send \"Spawn command\" \"" .. command .. "\"")
+
+local function exists(id)
+ local is_in_array = 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
+ end
+ end
+ end
+ return is_in_array
+end
+
+local function is_focused(id)
+ local view = scroll.focused_view()
+ local app_id = scroll.view_get_app_id(view)
+ return app_id == id
+end
+
+local function spawn(term, comm)
+ if (term) then
+ if (comm) then
+ scroll.command(nil, "exec kitty --class " .. id .. " -e " .. comm)
+ else
+ scroll.command(nil, "exec kitty --class " .. id)
+ end
+ else
+ scroll.command(nil, "exec " .. comm)
+ end
+end
+
+if (not exists(id)) then
+ spawn(terminal, command)
+end
+if (is_focused(id)) then
+ scroll.command(nil, "scratchpad show")
+else
+ scroll.command(nil, "[app_id=\"" .. id .. "\"] scratchpad show")
+end
diff --git a/scroll/scripts/swallow.lua b/scroll/scripts/swallow.lua
new file mode 100644
index 0000000..5760886
--- /dev/null
+++ b/scroll/scripts/swallow.lua
@@ -0,0 +1,32 @@
+local function candidate(view)
+ local app_id = scroll.view_get_app_id(view)
+ if app_id == "mpv" then
+ local pview = scroll.view_get_parent_view(view)
+ if pview ~= nil and pview ~= view then
+ local papp_id = scroll.view_get_app_id(pview)
+ if papp_id == "kitty" then
+ return scroll.view_get_container(pview)
+ end
+ end
+ end
+ return nil
+end
+
+local function on_create(view, _)
+ local parent = candidate(view)
+ if parent ~= nil then
+ scroll.command(parent, "move scratchpad")
+ end
+end
+
+local function on_destroy(view, _)
+ local parent = candidate(view)
+ if parent ~= nil then
+ scroll.command(nil, "scratchpad show; floating toggle")
+ end
+end
+
+scroll.add_callback("view_map", on_create, nil)
+scroll.add_callback("view_unmap", on_destroy, nil)
+
+