# vim: ft=swayconfig # # Default config for scroll # # Copy this to ~/.config/scroll/config and edit it to your liking. # # Read `man 5 scroll` for a complete reference. include ~/.config/scroll/config.d/* ### Variables # # Logo key. Use Mod1 for Alt. set $mod Mod4 # Home row direction keys, like vim set $left Left set $down Down set $up Up set $right Right # Your preferred terminal emulator set $term kitty # Your preferred application launcher set $rmenu tofi-drun --drun-launch=true -c ~/.config/tofi/themes/dmenu_vertical set $dmenu dmenu_run -l 15 # Your preferred file manager set $filemanager kitty -e lf # The scripts directory set $scripts $home/.config/scroll/scripts exec waybar exec hypridle exec hyprpaper ### Output configuration # # Default wallpaper (more resolutions are available in /usr/share/backgrounds/scroll/) # output * bg /usr/share/backgrounds/scroll/Sway_Wallpaper_Blue_1920x1080.png fill # # Example configuration: # # output HDMI-A-1 resolution 1920x1080 position 1920,0 # # You can get the names of your outputs by running: scrollmsg -t get_outputs #output eDP-1 resolution 1920x1080 position 0 0 #output HDMI-A-1 resolution 1920x1080 position 1920 0 #output DP-2 resolution 1920x1080 position 0 0 ### Idle configuration # # Example configuration: # # exec swayidle -w \ # timeout 300 'swaylock -f -c 000000' \ # timeout 600 'scrollmsg "output * power off"' resume 'scrollmsg "output * power on"' \ # before-sleep 'swaylock -f -c 000000' # # This will lock your screen after 300 seconds of inactivity, then turn off # your displays after another 300 seconds, and turn your screens back on when # resumed. It will also lock your screen before your computer goes to sleep. ### Input configuration # # Example configuration: # # input type:touchpad { # dwt enabled # tap enabled # natural_scroll enabled # middle_emulation enabled # } # # input type:keyboard { # xkb_layout "eu" # } # # You can also configure each device individually. # Read `man 5 scroll-input` for more information about this section. ### Windows defaults default_border pixel 2 gaps inner 4 gaps outer 20 client.focused #198844 #000000 #e0e0e0 #198844 #198844 client.focused_inactive #1b1d1c #000000 #e0e0e0 #1b1d1c #1b1d1c client.unfocused #1b1d1c #000000 #e0e0e0 #1b1d1c #1b1d1c # Idle inhibit for fullscreen windows for_window [all] inhibit_idle fullscreen # Layout settings layout_default_width 0.5 layout_default_height 1.0 layout_widths [0.33333333 0.5 0.666666667 1.0] layout_heights [0.33333333 0.5 0.666666667 1.0] fullscreen_movefocus true mouse_warping none # Animations animations { enabled yes 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 # # Basics: # # Start a terminal bindsym $mod+Return exec $term # Kill focused window bindsym $mod+Backspace kill bindsym $mod+Shift+Backspace kill unfocused bindsym $mod+Ctrl+Backspace kill all # Start your launcher bindsym $mod+e exec $rmenu bindsym $mod+d exec $dmenu # 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. # Change normal to inverse to use left mouse button for resizing and right # mouse button for dragging. floating_modifier $mod normal # Reload the configuration file bindsym $mod+Shift+c reload # Closes the active application (hopefully) bindsym $mod+Shift+q kill # Exit scroll (logs you out of your Wayland session) bindsym $mod+Shift+e exec scrollnag -t warning -m 'You pressed the exit shortcut. Do you really want to exit scroll? This will end your Wayland session.' -B 'Yes, exit scroll' 'scrollmsg exit' # Layout mode bindsym $mod+bracketleft set_mode h bindsym $mod+bracketright set_mode v # # Moving around: # # Move your focus around bindsym $mod+h focus left bindsym $mod+j focus down bindsym $mod+k focus up bindsym $mod+l focus right bindsym $mod+home focus beginning bindsym $mod+end focus end # Move the focused window with the same, but add Ctrl bindsym $mod+Ctrl+h move left bindsym $mod+Ctrl+j move down bindsym $mod+Ctrl+k move up bindsym $mod+Ctrl+l move right bindsym $mod+Ctrl+home move beginning bindsym $mod+Ctrl+end move end # nomode bindsym $mod+Alt+h move left nomode bindsym $mod+Alt+j move down nomode bindsym $mod+Alt+k move up nomode bindsym $mod+Alt+l move right nomode bindsym $mod+Alt+home move beginning nomode bindsym $mod+Alt+end move end nomode # Focus other monitors bindsym $mod+Shift+h focus output left 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. 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 # Scaling # Workspace bindsym $mod+Shift+comma scale_workspace incr -0.05 bindsym --whole-window $mod+Shift+button4 scale_workspace incr -0.05 bindsym $mod+Shift+period scale_workspace incr 0.05 bindsym --whole-window $mod+Shift+button5 scale_workspace incr 0.05 bindsym $mod+Shift+Ctrl+period scale_workspace reset # Overview bindsym --no-repeat $mod+tab scale_workspace overview bindsym --whole-window button8 scale_workspace overview # Jump # jump_labels_color #9e1530FF # jump_labels_background #15309eFF # jump_labels_scale 0.9 # jump_labels_keys asdf bindsym --no-repeat $mod+slash jump bindsym --no-repeat $mod+Shift+slash jump container bindsym --no-repeat $mod+Ctrl+slash jump workspaces bindsym --no-repeat $mod+Alt+slash jump floating # Content bindsym $mod+comma scale_content incr -0.05 bindsym --whole-window $mod+button4 scale_content incr -0.05 bindsym $mod+period scale_content incr 0.05 bindsym --whole-window $mod+button5 scale_content incr 0.05 bindsym $mod+Ctrl+period scale_content reset # # Layout stuff: # # Make the current focus fullscreen bindsym $mod+f fullscreen #bindsym $mod+Shift+f fullscreen global bindsym $mod+Shift+f fullscreen_application toggle bindsym $mod+Ctrl+Alt+f fullscreen_application reset # Maximize, not fullscreen bindsym $mod+m lua $scripts/maximize.lua toggle # Toggle the current focus between tiling and floating mode bindsym $mod+y focus mode_toggle # Toggle layout type (h<->v) bindsym $mod+Shift+y layout_transpose # Float a window bindsym $mod+Shift+space floating toggle # Toggle sticky bindsym $mod+Shift+Ctrl+a sticky toggle # Toggle pin bindsym --no-repeat $mod+a pin beginning bindsym --no-repeat $mod+Shift+a pin end # Selection bindsym --no-repeat $mod+Insert selection toggle bindsym --no-repeat $mod+Ctrl+Insert selection reset bindsym --no-repeat $mod+Shift+Insert selection move bindsym --no-repeat $mod+Ctrl+Shift+Insert selection workspace bindsym --no-repeat $mod+Alt+Insert selection to_trail # Marks # bindsym $mod+m exec scroll-mark-toggle.sh # bindsym $mod+Shift+m exec scroll-mark-remove.sh # bindsym $mod+apostrophe exec scroll-mark-switch.sh # # Scratchpad: # # Scroll has a "scratchpad", which is a bag of holding for windows. # You can send windows there and get them back later. # Move the currently focused window to the scratchpad #bindsym $mod+Shift+z move scratchpad # Show the next scratchpad window or hide the focused scratchpad window. # If there are multiple scratchpad windows, this command cycles through them. #bindsym $mod+z scratchpad show #bindsym --no-repeat $mod+Alt+z scratchpad jump #bindsym $mod+Ctrl+z workspace back_and_forth # # Mode modifiers # mode "modifiers" { bindsym $right set_mode after; mode default bindsym $left set_mode before; mode default bindsym home set_mode beginning; mode default bindsym end set_mode end; mode default bindsym $up set_mode focus; mode default bindsym $down set_mode nofocus; mode default bindsym h set_mode center_horiz; mode default bindsym Shift+h set_mode nocenter_horiz; mode default bindsym v set_mode center_vert; mode default bindsym Shift+v set_mode nocenter_vert; mode default bindsym r set_mode reorder_auto; mode default bindsym Shift+r set_mode noreorder_auto; mode default # Return to default mode bindsym Escape mode "default" } bindsym $mod+backslash mode "modifiers" # # Resizing containers: # bindsym $mod+minus cycle_size h prev bindsym $mod+equal cycle_size h next bindsym $mod+Shift+minus cycle_size v prev bindsym $mod+Shift+equal cycle_size v next mode "setsizeh" { bindsym 1 set_size h 0.125; mode default bindsym 2 set_size h 0.1666666667; mode default bindsym 3 set_size h 0.25; mode default bindsym 4 set_size h 0.333333333; mode default bindsym 5 set_size h 0.375; mode default bindsym 6 set_size h 0.5; mode default bindsym 7 set_size h 0.625; mode default bindsym 8 set_size h 0.6666666667; mode default bindsym 9 set_size h 0.75; mode default bindsym 0 set_size h 0.833333333; mode default bindsym minus set_size h 0.875; mode default bindsym equal set_size h 1.0; mode default # Return to default mode bindsym Escape mode "default" } bindsym $mod+b mode "setsizeh" mode "setsizev" { bindsym 1 set_size v 0.125; mode default bindsym 2 set_size v 0.1666666667; mode default bindsym 3 set_size v 0.25; mode default bindsym 4 set_size v 0.333333333; mode default bindsym 5 set_size v 0.375; mode default bindsym 6 set_size v 0.5; mode default bindsym 7 set_size v 0.625; mode default bindsym 8 set_size v 0.6666666667; mode default bindsym 9 set_size v 0.75; mode default bindsym 0 set_size v 0.833333333; mode default bindsym minus set_size v 0.875; mode default bindsym equal set_size v 1.0; mode default # Return to default mode bindsym Escape mode "default" } bindsym $mod+Shift+b mode "setsizev" mode "resize" { # left will shrink the containers width # right will grow the containers width # up will shrink the containers height # down will grow the containers height bindsym $left resize shrink width 100px bindsym $down resize grow height 100px bindsym $up resize shrink height 100px bindsym $right resize grow width 100px # Return to default mode bindsym Escape mode "default" } bindsym $mod+Shift+r mode "resize" mode "align" { bindsym c align center; mode default bindsym m align middle; mode default bindsym r align reset; mode default bindsym $left align left; mode default bindsym $right align right; mode default bindsym $up align up; mode default bindsym $down align down; mode default bindsym Escape mode "default" } bindsym $mod+c mode "align" mode "fit_size" { bindsym w fit_size h visible proportional; mode default bindsym Shift+w fit_size v visible proportional; mode default bindsym Ctrl+w fit_size h visible equal; mode default bindsym Ctrl+Shift+w fit_size v visible equal; mode default bindsym $right fit_size h toend proportional; mode default bindsym Shift+$right fit_size v toend proportional; mode default bindsym Ctrl+$right fit_size h toend equal; mode default bindsym Ctrl+Shift+$right fit_size v toend equal; mode default bindsym $left fit_size h tobeg proportional; mode default bindsym Shift+$left fit_size v tobeg proportional; mode default bindsym Ctrl+$left fit_size h tobeg equal; mode default bindsym Ctrl+Shift+$left fit_size v tobeg equal; mode default bindsym $up fit_size h active proportional; mode default bindsym Shift+$up fit_size v active proportional; mode default #bindsym Ctrl+$up fit_size h active equal; mode default #bindsym Ctrl+Shift+$up fit_size v active equal; mode default bindsym $down fit_size h all proportional; mode default bindsym Shift+$down fit_size v all proportional; mode default bindsym Ctrl+$down fit_size h all equal; mode default bindsym Ctrl+Shift+$down fit_size v all equal; mode default bindsym Escape mode "default" } bindsym $mod+w mode "fit_size" mode "trailmark" { bindsym bracketright trailmark next bindsym bracketleft trailmark prev bindsym semicolon trailmark toggle; mode default bindsym Escape mode "default" } bindsym $mod+semicolon mode "trailmark" mode "trail" { bindsym bracketright trail next bindsym bracketleft trail prev bindsym semicolon trail new; mode default bindsym d trail delete; mode default bindsym c trail clear; mode default bindsym insert trail to_selection; mode default bindsym Escape mode "default" } bindsym $mod+Shift+semicolon mode "trail" mode "spaces" { bindsym 1 space load 1; mode default bindsym 2 space load 2; mode default bindsym 3 space load 3; mode default bindsym 4 space load 4; mode default bindsym 5 space load 5; mode default bindsym 6 space load 6; mode default bindsym 7 space load 7; mode default bindsym 8 space load 8; mode default bindsym 9 space load 9; mode default bindsym 0 space load 0; mode default bindsym Shift+1 space save 1; mode default bindsym Shift+2 space save 2; mode default bindsym Shift+3 space save 3; mode default bindsym Shift+4 space save 4; mode default bindsym Shift+5 space save 5; mode default bindsym Shift+6 space save 6; mode default bindsym Shift+7 space save 7; mode default bindsym Shift+8 space save 8; mode default bindsym Shift+9 space save 9; mode default bindsym Shift+0 space save 0; mode default bindsym Ctrl+1 space restore 1; mode default bindsym Ctrl+2 space restore 2; mode default bindsym Ctrl+3 space restore 3; mode default bindsym Ctrl+4 space restore 4; mode default bindsym Ctrl+5 space restore 5; mode default bindsym Ctrl+6 space restore 6; mode default bindsym Ctrl+7 space restore 7; mode default bindsym Ctrl+8 space restore 8; mode default bindsym Ctrl+9 space restore 9; mode default bindsym Ctrl+0 space restore 0; mode default bindsym Escape mode "default" } bindsym $mod+g mode "spaces" # # Utilities: # # Special keys to adjust volume via PulseAudio bindsym --locked XF86AudioMute exec volsv -t bindsym --locked XF86AudioLowerVolume exec volsv -d bindsym --locked XF86AudioRaiseVolume exec volsv -i bindsym --locked XF86AudioMicMute exec volsv -m # Special keys to control media via playerctl bindsym --locked XF86AudioPlay exec playerctl play-pause bindsym --locked XF86AudioPause exec playerctl play-pause bindsym --locked XF86AudioPrev exec playerctl previous bindsym --locked XF86AudioNext exec playerctl next bindsym --locked XF86AudioStop exec playerctl stop # Special keys to adjust brightness via brightnessctl bindsym --locked XF86MonBrightnessDown exec bl -d bindsym --locked XF86MonBrightnessUp exec bl -i # Special key to take a screenshot with grim bindsym Print exec grim # Launch lwc librewolf profile interface bindsym $mod+Alt+w exec lwc # Launch qbc qutebrowser profile interface bindsym $mod+Alt+q exec qbc # Launch dmount dmenu mount script bindsym $mod+Alt+comma exec dmount # Launch dmenuumount dmenu umount script bindsym $mod+Alt+period exec dmenuumount focus_wrapping no bindgesture swipe:4:right workspace next bindgesture swipe:4:left workspace prev bindgesture swipe:4:up scale_workspace overview # Enable window swallowing (of mpv specifically) lua $scripts/swallow.lua # Scratchpads for_window [app_id="sphtop"] move scratchpad for_window [app_id="sphtop"] scratchpad show bindsym $mod+Ctrl+z lua $scripts/scratchpad.lua sphtop kitty htop for_window [app_id="spterm"] move scratchpad for_window [app_id="spterm"] scratchpad show bindsym $mod+Ctrl+x lua $scripts/scratchpad.lua spterm kitty for_window [app_id="sppmxr"] move scratchpad for_window [app_id="sppmxr"] scratchpad show bindsym $mod+Ctrl+c lua $scripts/scratchpad.lua sppmxr kitty pulsemixer for_window [app_id="spblue"] move scratchpad for_window [app_id="spblue"] scratchpad show bindsym $mod+Ctrl+v lua $scripts/scratchpad.lua spblue kitty bluetoothctl for_window [app_id="spncmp"] move scratchpad for_window [app_id="spncmp"] scratchpad show bindsym $mod+Ctrl+b lua $scripts/scratchpad.lua spncmp kitty ncmpcpp for_window [app_id="spmutt"] move scratchpad for_window [app_id="spmutt"] scratchpad show bindsym $mod+Ctrl+a lua $scripts/scratchpad.lua spmutt kitty neomutt for_window [app_id="spprof"] move scratchpad for_window [app_id="spprof"] scratchpad show bindsym $mod+Ctrl+s lua $scripts/scratchpad.lua spprof kitty profanity for_window [app_id="spirss"] move scratchpad for_window [app_id="spirss"] scratchpad show bindsym $mod+Ctrl+d lua $scripts/scratchpad.lua spirss kitty irssi for_window [app_id="sptodo"] move scratchpad for_window [app_id="sptodo"] scratchpad show bindsym $mod+Ctrl+f lua $scripts/scratchpad.lua sptodo kitty todo for_window [app_id="sptrmc"] move scratchpad for_window [app_id="sptrmc"] scratchpad show bindsym $mod+Ctrl+g lua $scripts/scratchpad.lua sptrmc kitty tremc for_window [app_id="org.pipewire.Helvum"] move scratchpad for_window [app_id="org.pipewire.Helvum"] scratchpad show bindsym $mod+Ctrl+q lua $scripts/scratchpad.lua org.pipewire.Helvum helvum for_window [app_id="com.github.wwmm.easyeffects"] move scratchpad for_window [app_id="com.github.wwmm.easyeffects"] scratchpad show bindsym $mod+Ctrl+e lua $scripts/scratchpad.lua com.github.wwmm.easyeffects easyeffects # # Workspace rules: # # Opens a terminal when creating workspace 6 # workspace 6 exec kitty # # Status Bar: # # Read `man 5 scroll-bar` for more information about this section. bar { mode invisible #position top ## When the status_command prints a new line to stdout, scrollbar updates. ## The default just shows the current date and time. #status_command while date +'%Y-%m-%d %X'; do sleep 1; done #colors { # statusline #ffffff # background #323232 # inactive_workspace #32323200 #32323200 #5c5c5c # scroller #2F343AFF #055E20FF #FFFFFFFF #} } # include /etc/scroll/config.d/*