diff options
Diffstat (limited to 'scroll')
-rw-r--r-- | scroll/config | 82 | ||||
-rw-r--r-- | scroll/config.d/swaysome.conf | 69 | ||||
-rw-r--r-- | scroll/scripts/maximize_when_only.lua | 38 | ||||
-rw-r--r-- | scroll/scripts/scratchpad.lua | 12 |
4 files changed, 164 insertions, 37 deletions
diff --git a/scroll/config b/scroll/config index 6655223..c6bb704 100644 --- a/scroll/config +++ b/scroll/config @@ -8,6 +8,9 @@ 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 # # Logo key. Use Mod1 for Alt. @@ -97,15 +100,17 @@ layout_heights [0.33333333 0.5 0.666666667 1.0] fullscreen_movefocus true -mouse_warping container +focus_follows_mouse yes + +mouse_warping none # Animations animations { enabled yes - default yes 300 var 3 [ 0.215 0.61 0.355 1 ] - window_open yes 300 var 3 [ 0 0 1 1 ] - window_move yes 300 var 3 [ 0.215 0.61 0.355 1 ] off 0.05 6 [0 0.6 0.4 0 1 0 0.4 -0.6 1 -0.6] - window_size yes 300 var 3 [ -0.35 0 0 0.5 ] + default yes 100 var 3 [ 0.215 0.61 0.355 1 ] + window_open yes 100 var 3 [ 0 0 1 1 ] + window_move yes 100 var 3 [ 0.215 0.61 0.355 1 ] off 0.05 6 [0 0.6 0.4 0 1 0 0.4 -0.6 1 -0.6] + window_size yes 100 var 3 [ -0.35 0 0 0.5 ] } ### Key bindings @@ -123,9 +128,16 @@ 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 + # Lock your screen + bindsym $mod+q exec loginctl lock-session + # Drag floating windows by holding down $mod and left mouse button. # Resize them with right mouse button + $mod. # Despite the name, also works for non-floating windows. @@ -175,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 @@ -216,7 +230,7 @@ animations { # Overview bindsym --no-repeat $mod+tab scale_workspace overview - bindsym --whole-window button8 scale_workspace overview + #bindsym --whole-window button8 scale_workspace overview # Jump # jump_labels_color #9e1530FF @@ -499,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 @@ -509,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 @@ -575,3 +592,4 @@ bar { #} } # +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..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) |