# 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.

### 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 $menu wmenu-run

### Output configuration
#
# Default wallpaper (more resolutions are available in @datadir@/backgrounds/scroll/)
# output * bg @datadir@/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

### 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 #15439e #4b4b4b #e0e0e0 #2e9ef4 #15439e
client.focused_inactive #595959 #3b3b3b #e0e0e0 #2e9ef4 #595959
client.unfocused #595959 #1b1b1b #e0e0e0 #2e9ef4 #595959

# titlebar_border_radius 8
# default_decoration border_radius 0 shadow false shadow_dynamic false shadow_size 40 shadow_blur 30 shadow_offset 40 40 shadow_color #00000070 dim false dim_color #00000040


# 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]

# These are the default values for some useful scroll options, consult
# `man 5 scroll` and change them to your preference

# align_reset_auto yes
# cursor_shake_magnify false
# cycle_size_wrap false
# fullscreen_movefocus true nofollow
# fullscreen_on_request default
# maximize_if_single false
# workspace_next_on_output_create_empty true
# xwayland_output_scale true
# focus_wrapping no
# focus_on_window_activation focus
# xdg_activation_force false

# 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 ]
    window_update yes 300 var 3 [ 0 0 1 1 ]
}

### 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+r exec $menu
    
    bindsym $mod+e exec $filemanager

    # 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

    # Exit scroll (logs you out of your Wayland session)
    bindsym $mod+Shift+x 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' -w 500 -e center -y overlay

    # Layout mode
    bindsym $mod+bracketleft set_mode h
    bindsym $mod+bracketright set_mode v
#
# Moving around:
#
    # Move your focus around
    bindsym $mod+$left focus left
    bindsym $mod+$down focus down
    bindsym $mod+$up focus up
    bindsym $mod+$right 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+$left move left
    bindsym $mod+Ctrl+$down move down
    bindsym $mod+Ctrl+$up move up
    bindsym $mod+Ctrl+$right move right
    bindsym $mod+Ctrl+home move beginning
    bindsym $mod+Ctrl+end move end
    # nomode
    bindsym $mod+Alt+$left move left nomode
    bindsym $mod+Alt+$down move down nomode
    bindsym $mod+Alt+$up move up nomode
    bindsym $mod+Alt+$right move right nomode
    bindsym $mod+Alt+home move beginning nomode
    bindsym $mod+Alt+end move end nomode

    # Focus other monitors
    bindsym $mod+Shift+$left focus output left
    bindsym $mod+Shift+$down focus output down
    bindsym $mod+Shift+$up focus output up
    bindsym $mod+Shift+$right 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
    bindsym $mod+0 workspace number 10
    # 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
    bindsym $mod+Shift+0 move container to workspace number 10; workspace number 10 
    # Note: workspaces can have any name you want, not just numbers.
    # We just use 1-10 as the default.

    bindsym $mod+Ctrl+1 workspace swap 1
    bindsym $mod+Ctrl+2 workspace swap 2
    bindsym $mod+Ctrl+3 workspace swap 3
    bindsym $mod+Ctrl+4 workspace swap 4
    bindsym $mod+Ctrl+5 workspace swap 5
    bindsym $mod+Ctrl+6 workspace swap 6
    bindsym $mod+Ctrl+7 workspace swap 7
    bindsym $mod+Ctrl+8 workspace swap 8
    bindsym $mod+Ctrl+9 workspace swap 9
    bindsym $mod+Ctrl+0 workspace swap 10

    bindsym $mod+Shift+Page_Up workspace prev
    bindsym $mod+Shift+Page_Down workspace next
    bindsym $mod+Page_Up workspace prev_on_output
    bindsym $mod+Page_Down workspace next_on_output

# 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+Ctrl+f fullscreen layout
    bindsym $mod+Alt+f fullscreen application
    bindsym $mod+Ctrl+Alt+f fullscreen global

    # 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+f 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"

# Toggle Size (and maximize)
bindsym $mod+t toggle_size this 1.0 1.0
bindsym $mod+Shift+t toggle_size active 1.0 1.0

mode "togglesizeh" {
    bindsym 1 toggle_size all 0.125 1.0; mode default
    bindsym 2 toggle_size all 0.1666666667 1.0; mode default
    bindsym 3 toggle_size all 0.25 1.0; mode default
    bindsym 4 toggle_size all 0.333333333 1.0; mode default
    bindsym 5 toggle_size all 0.375 1.0; mode default
    bindsym 6 toggle_size all 0.5 1.0; mode default
    bindsym 7 toggle_size all 0.625 1.0; mode default
    bindsym 8 toggle_size all 0.6666666667 1.0; mode default
    bindsym 9 toggle_size all 0.75 1.0; mode default
    bindsym 0 toggle_size all 0.833333333 1.0; mode default
    bindsym minus toggle_size all 0.875 1.0; mode default
    bindsym equal toggle_size all 1.0 1.0; mode default
    bindsym r toggle_size reset; mode default

    # Return to default mode
    bindsym Escape mode "default"
}
bindsym $mod+Ctrl+t mode "togglesizeh"

mode "togglesizev" {
    bindsym 1 toggle_size all 1.0 0.125; mode default
    bindsym 2 toggle_size all 1.0 0.1666666667; mode default
    bindsym 3 toggle_size all 1.0 0.25; mode default
    bindsym 4 toggle_size all 1.0 0.333333333; mode default
    bindsym 5 toggle_size all 1.0 0.375; mode default
    bindsym 6 toggle_size all 1.0 0.5; mode default
    bindsym 7 toggle_size all 1.0 0.625; mode default
    bindsym 8 toggle_size all 1.0 0.6666666667; mode default
    bindsym 9 toggle_size all 1.0 0.75; mode default
    bindsym 0 toggle_size all 1.0 0.833333333; mode default
    bindsym minus toggle_size all 1.0 0.875; mode default
    bindsym equal toggle_size all 1.0 1.0; mode default
    bindsym r toggle_size reset; mode default

    # Return to default mode
    bindsym Escape mode "default"
}
bindsym $mod+Ctrl+Shift+t mode "togglesizev"

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 --no-repeat slash trailmark jump; mode default
    bindsym Escape mode "default"
}
bindsym $mod+semicolon mode "trailmark"

mode "trail" {
    bindsym bracketright trail next
    bindsym bracketleft trail prev
    bindsym 0 trail number 0; mode default
    bindsym 1 trail number 1; mode default
    bindsym 2 trail number 2; mode default
    bindsym 3 trail number 3; mode default
    bindsym 4 trail number 4; mode default
    bindsym 5 trail number 5; mode default
    bindsym 6 trail number 6; mode default
    bindsym 7 trail number 7; mode default
    bindsym 8 trail number 8; mode default
    bindsym 9 trail number 9; mode default
    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 pactl set-sink-mute \@DEFAULT_SINK@ toggle
    bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
    bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
    bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle

    # 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 brightnessctl set 5%-
    bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+

    # Special key to take a screenshot with grim
    bindsym Print exec grim


focus_wrapping no

bindgesture swipe:4:right workspace next
bindgesture swipe:4:left workspace prev

bindgesture swipe:4:up scale_workspace overview 

#
# 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 {
    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 @sysconfdir@/scroll/config.d/*
