summaryrefslogtreecommitdiff
path: root/scroll
diff options
context:
space:
mode:
authorzachir <zachir@librem.one>2025-07-30 06:52:19 -0500
committerzachir <zachir@librem.one>2025-07-30 06:52:19 -0500
commit96e30fbe6d97242feacfd6f160396f01ec87a9f4 (patch)
treeba6cbfe5a601d59a9b01d6c4a3a72240f516d1d0 /scroll
parent442246498a50440a19d9cba78e83abb55d542879 (diff)
parent758bf486be2560343561b1d03bffe998f6f932b4 (diff)
Merge branch 'master' into cas
Diffstat (limited to 'scroll')
-rw-r--r--scroll/config69
-rw-r--r--scroll/config.d/swaysome.conf69
-rw-r--r--scroll/scripts/maximize_when_only.lua38
-rw-r--r--scroll/scripts/scratchpad.lua6
4 files changed, 152 insertions, 30 deletions
diff --git a/scroll/config b/scroll/config
index e689a61..889da2e 100644
--- a/scroll/config
+++ b/scroll/config
@@ -6,7 +6,10 @@
#
# Read `man 5 scroll` for a complete reference.
-include ~/.config/scroll/config.d/*
+include /etc/scroll/config.d/*
+
+# This includes config.d/user.conf, which should set the $home variable
+include ~/.config/scroll/config.d/user.conf
### Variables
#
@@ -97,6 +100,8 @@ layout_heights [0.33333333 0.5 0.666666667 1.0]
fullscreen_movefocus true
+focus_follows_mouse yes
+
mouse_warping none
# Animations
@@ -123,6 +128,9 @@ animations {
# Start your launcher
bindsym $mod+e exec $rmenu
bindsym $mod+d exec $dmenu
+
+ # Start restart menu
+ bindsym $mod+r exec rs
# Launch your file manager
bindsym $mod+Alt+f exec $filemanager
@@ -179,36 +187,38 @@ animations {
bindsym $mod+Shift+j focus output down
bindsym $mod+Shift+k focus output up
bindsym $mod+Shift+l focus output right
-#
-# Workspaces:
-#
- # Switch to workspace
- bindsym $mod+1 workspace number 1
- bindsym $mod+2 workspace number 2
- bindsym $mod+3 workspace number 3
- bindsym $mod+4 workspace number 4
- bindsym $mod+5 workspace number 5
- bindsym $mod+6 workspace number 6
- bindsym $mod+7 workspace number 7
- bindsym $mod+8 workspace number 8
- bindsym $mod+9 workspace number 9
- # Move focused container to workspace
- bindsym $mod+Shift+1 move container to workspace number 1; workspace number 1
- bindsym $mod+Shift+2 move container to workspace number 2; workspace number 2
- bindsym $mod+Shift+3 move container to workspace number 3; workspace number 3
- bindsym $mod+Shift+4 move container to workspace number 4; workspace number 4
- bindsym $mod+Shift+5 move container to workspace number 5; workspace number 5
- bindsym $mod+Shift+6 move container to workspace number 6; workspace number 6
- bindsym $mod+Shift+7 move container to workspace number 7; workspace number 7
- bindsym $mod+Shift+8 move container to workspace number 8; workspace number 8
- bindsym $mod+Shift+9 move container to workspace number 9; workspace number 9
- # Note: workspaces can have any name you want, not just numbers.
- # We just use 1-10 as the default.
+ # Move window to other monitors
bindsym $mod+Shift+Ctrl+h move container to output left
bindsym $mod+Shift+Ctrl+j move container to output down
bindsym $mod+Shift+Ctrl+k move container to output up
bindsym $mod+Shift+Ctrl+l move container to output right
+##
+## Workspaces:
+## NOW USING SWAYSOME
+##
+# # Switch to workspace
+# bindsym $mod+1 workspace number 1
+# bindsym $mod+2 workspace number 2
+# bindsym $mod+3 workspace number 3
+# bindsym $mod+4 workspace number 4
+# bindsym $mod+5 workspace number 5
+# bindsym $mod+6 workspace number 6
+# bindsym $mod+7 workspace number 7
+# bindsym $mod+8 workspace number 8
+# bindsym $mod+9 workspace number 9
+# # Move focused container to workspace
+# bindsym $mod+Shift+1 move container to workspace number 1; workspace number 1
+# bindsym $mod+Shift+2 move container to workspace number 2; workspace number 2
+# bindsym $mod+Shift+3 move container to workspace number 3; workspace number 3
+# bindsym $mod+Shift+4 move container to workspace number 4; workspace number 4
+# bindsym $mod+Shift+5 move container to workspace number 5; workspace number 5
+# bindsym $mod+Shift+6 move container to workspace number 6; workspace number 6
+# bindsym $mod+Shift+7 move container to workspace number 7; workspace number 7
+# bindsym $mod+Shift+8 move container to workspace number 8; workspace number 8
+# bindsym $mod+Shift+9 move container to workspace number 9; workspace number 9
+# # Note: workspaces can have any name you want, not just numbers.
+# # We just use 1-10 as the default.
# Scaling
# Workspace
@@ -503,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
@@ -513,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
@@ -579,4 +592,4 @@ bar {
#}
}
#
-include /etc/scroll/config.d/*
+include ~/.config/scroll/config.d/*
diff --git a/scroll/config.d/swaysome.conf b/scroll/config.d/swaysome.conf
new file mode 100644
index 0000000..eebf6a3
--- /dev/null
+++ b/scroll/config.d/swaysome.conf
@@ -0,0 +1,69 @@
+# vim: ft=swayconfig
+#
+# Use (un)bindcode or (un)bindsym, depending on what you used in your main sway config file.
+# The `--no-warn` setting is only added to shortcuts that exist in the default config. You may want to add or remove
+# that flag on some bindings depending on your config.
+
+
+# Change focus between workspaces
+bindsym --no-warn $mod+1 exec "swaysome focus 1"
+bindsym --no-warn $mod+2 exec "swaysome focus 2"
+bindsym --no-warn $mod+3 exec "swaysome focus 3"
+bindsym --no-warn $mod+4 exec "swaysome focus 4"
+bindsym --no-warn $mod+5 exec "swaysome focus 5"
+bindsym --no-warn $mod+6 exec "swaysome focus 6"
+bindsym --no-warn $mod+7 exec "swaysome focus 7"
+bindsym --no-warn $mod+8 exec "swaysome focus 8"
+bindsym --no-warn $mod+9 exec "swaysome focus 9"
+#bindsym --no-warn $mod+0 exec "swaysome focus 0"
+
+# Move containers between workspaces
+bindsym --no-warn $mod+Shift+1 exec "swaysome move 1"
+bindsym --no-warn $mod+Shift+2 exec "swaysome move 2"
+bindsym --no-warn $mod+Shift+3 exec "swaysome move 3"
+bindsym --no-warn $mod+Shift+4 exec "swaysome move 4"
+bindsym --no-warn $mod+Shift+5 exec "swaysome move 5"
+bindsym --no-warn $mod+Shift+6 exec "swaysome move 6"
+bindsym --no-warn $mod+Shift+7 exec "swaysome move 7"
+bindsym --no-warn $mod+Shift+8 exec "swaysome move 8"
+bindsym --no-warn $mod+Shift+9 exec "swaysome move 9"
+#bindsym --no-warn $mod+Shift+0 exec "swaysome move 0"
+
+# Focus workspace groups
+bindsym $mod+Alt+1 exec "swaysome focus-group 1"
+bindsym $mod+Alt+2 exec "swaysome focus-group 2"
+bindsym $mod+Alt+3 exec "swaysome focus-group 3"
+bindsym $mod+Alt+4 exec "swaysome focus-group 4"
+bindsym $mod+Alt+5 exec "swaysome focus-group 5"
+bindsym $mod+Alt+6 exec "swaysome focus-group 6"
+bindsym $mod+Alt+7 exec "swaysome focus-group 7"
+bindsym $mod+Alt+8 exec "swaysome focus-group 8"
+bindsym $mod+Alt+9 exec "swaysome focus-group 9"
+#bindsym $mod+Alt+0 exec "swaysome focus-group 0"
+
+# Move containers to other workspace groups
+bindsym $mod+Alt+Shift+1 exec "swaysome move-to-group 1"
+bindsym $mod+Alt+Shift+2 exec "swaysome move-to-group 2"
+bindsym $mod+Alt+Shift+3 exec "swaysome move-to-group 3"
+bindsym $mod+Alt+Shift+4 exec "swaysome move-to-group 4"
+bindsym $mod+Alt+Shift+5 exec "swaysome move-to-group 5"
+bindsym $mod+Alt+Shift+6 exec "swaysome move-to-group 6"
+bindsym $mod+Alt+Shift+7 exec "swaysome move-to-group 7"
+bindsym $mod+Alt+Shift+8 exec "swaysome move-to-group 8"
+bindsym $mod+Alt+Shift+9 exec "swaysome move-to-group 9"
+#bindsym $mod+Alt+Shift+0 exec "swaysome move-to-group 0"
+
+# Move focused container to next output
+bindsym $mod+o exec "swaysome next-output"
+# Move focused container to previous output
+bindsym $mod+Shift+o exec "swaysome prev-output"
+
+# Move focused workspace group to next output
+bindsym $mod+Alt+o exec "swaysome workspace-group-next-output"
+# Move focused workspace group to previous output
+bindsym $mod+Alt+Shift+o exec "swaysome workspace-group-prev-output"
+
+# Init workspaces for every screen
+exec "swaysome init 1"
+
+
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..e581cc1 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,7 +21,7 @@ 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