summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scroll/config32
-rw-r--r--scroll/scripts/scratchpad.lua41
2 files changed, 73 insertions, 0 deletions
diff --git a/scroll/config b/scroll/config
index 3c8b0c3..2b18e24 100644
--- a/scroll/config
+++ b/scroll/config
@@ -499,6 +499,38 @@ bindgesture swipe:4:up scale_workspace overview
# Enable window swallowing (of mpv specifically)
lua $home/.config/scroll/scripts/swallow.lua
+# Scratchpads
+for_window [app_id="sphtop"] move scratchpad
+for_window [app_id="sphtop"] scratchpad show
+bindsym $mod+Ctrl+z lua $home/.config/scroll/scripts/scratchpad.lua sphtop htop
+for_window [app_id="spterm"] move scratchpad
+for_window [app_id="spterm"] scratchpad show
+bindsym $mod+Ctrl+x lua $home/.config/scroll/scripts/scratchpad.lua spterm
+for_window [app_id="sppmxr"] move scratchpad
+for_window [app_id="sppmxr"] scratchpad show
+bindsym $mod+Ctrl+c lua $home/.config/scroll/scripts/scratchpad.lua sppmxr pulsemixer
+for_window [app_id="spblue"] move scratchpad
+for_window [app_id="spblue"] scratchpad show
+bindsym $mod+Ctrl+v lua $home/.config/scroll/scripts/scratchpad.lua spblue bluetoothctl
+for_window [app_id="spncmp"] move scratchpad
+for_window [app_id="spncmp"] scratchpad show
+bindsym $mod+Ctrl+b lua $home/.config/scroll/scripts/scratchpad.lua spncmp ncmpcpp
+for_window [app_id="spmutt"] move scratchpad
+for_window [app_id="spmutt"] scratchpad show
+bindsym $mod+Ctrl+a lua $home/.config/scroll/scripts/scratchpad.lua spmutt neomutt
+for_window [app_id="spprof"] move scratchpad
+for_window [app_id="spprof"] scratchpad show
+bindsym $mod+Ctrl+s lua $home/.config/scroll/scripts/scratchpad.lua spprof profanity
+for_window [app_id="spirss"] move scratchpad
+for_window [app_id="spirss"] scratchpad show
+bindsym $mod+Ctrl+d lua $home/.config/scroll/scripts/scratchpad.lua spirss irssi
+for_window [app_id="sptodo"] move scratchpad
+for_window [app_id="sptodo"] scratchpad show
+bindsym $mod+Ctrl+f lua $home/.config/scroll/scripts/scratchpad.lua sptodo todo
+for_window [app_id="sptrmc"] move scratchpad
+for_window [app_id="sptrmc"] scratchpad show
+bindsym $mod+Ctrl+g lua $home/.config/scroll/scripts/scratchpad.lua sptrmc tremc
+
#
# Workspace rules:
#
diff --git a/scroll/scripts/scratchpad.lua b/scroll/scripts/scratchpad.lua
new file mode 100644
index 0000000..7e078d6
--- /dev/null
+++ b/scroll/scripts/scratchpad.lua
@@ -0,0 +1,41 @@
+local args, _ = ...
+local id = ""
+local spawn = ""
+
+for i, arg in ipairs(args) do
+ if i <= 1 then
+ id = arg
+ else
+ spawn = spawn .. " " .. arg
+ end
+end
+
+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
+
+if (not exists(id)) then
+ scroll.command(nil, "exec kitty --class " .. id .. spawn)
+end
+if (is_focused(id)) then
+ scroll.command(nill, "scratchpad show")
+else
+ scroll.command(nil, "[app_id=\"" .. id .. "\"] scratchpad show")
+end