# vim: filetype=i3config
# Logo key. Use Mod1 for Alt.
set $mod Mod4
bindsym $mod+F12 reload
bindsym $mod+Escape exec swaylock -c 000000 & sleep 5 && systemctl suspend
bindsym $mod+Shift+Escape exec systemctl poweroff
focus_follows_mouse no

# Variables to set
set $terminal alacritty
set $browser firefox
set $files thunar
set $editor code


### Idle configuration

#with lock

#exec swayidle -w\
#    timeout 1200 'swaylock -f -C ~/.config/sway/swaylock/config'\
#    timeout 1200 'swaymsg "output * dpms off"' \
#    resume 'swaymsg "output * dpms on"' \
#    before-sleep 'swaylock -C ~/.config/sway/swaylock/config'

# without lock
#exec swayidle -w\
#    timeout 1200 'swaymsg "output * dpms off"' \
#    resume 'swaymsg "output * dpms on"'

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


### Key bindings

## Function keys
bindsym $mod+F1 exec $browser
bindsym $mod+F2 exec $editor
bindsym $mod+F3 exec inkscape
bindsym $mod+F4 exec gimp
bindsym $mod+F5 exec meld
bindsym $mod+F6 exec vlc
bindsym $mod+F7 exec virtualbox
bindsym $mod+F8 exec $files
bindsym $mod+F9 exec lollypop
bindsym $mod+F10 exec spotify
bindsym $mod+F11 exec rofi -show drun


bindsym $mod+Return exec "rofi -show"
bindsym $mod+Shift+Space exec $terminal

# archlinux tweak tool
bindsym Ctrl+Alt+e archlinux-tweak-tool

# archlinux-logout
bindsym $mod+x exec archlinux-logout
bindsym $mod+Shift+x exec archlinux-logout

## Lock Screen
bindsym Ctrl+Alt+l exec ~/.config/sway/scripts/lockman.sh

bindsym $mod+q kill

# 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


# conky
bindsym $mod+c exec conky-toggle
bindsym $mod+Ctrl+c exec killall conky
bindsym Ctrl+Alt+Next exec conky-rotate -n
bindsym Ctrl+Alt+Prior exec conky-rotate -p


#bindsym $mod+Escape exec ~/.config/sway/scripts/wkill.sh

# CONTROL + ALT
bindsym $mod+e exec thunar
bindsym $mod+w exec firefox
bindsym Ctrl+Alt+p exec pamac-manager
bindsym Ctrl+Alt+u exec pavucontrol

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

    # Move the focused window with the same, but add Shift
    bindsym $mod+Shift+h move left
    bindsym $mod+Shift+j move down
    bindsym $mod+Shift+k move up
    bindsym $mod+Shift+l move right
#
# Workspaces:
#
    # Qwerty
    # 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
    bindsym $mod+Shift+2 move container to workspace number 2
    bindsym $mod+Shift+3 move container to workspace number 3
    bindsym $mod+Shift+4 move container to workspace number 4
    bindsym $mod+Shift+5 move container to workspace number 5
    bindsym $mod+Shift+6 move container to workspace number 6
    bindsym $mod+Shift+7 move container to workspace number 7
    bindsym $mod+Shift+8 move container to workspace number 8
    bindsym $mod+Shift+9 move container to workspace number 9
    bindsym $mod+Shift+0 move container to workspace number 10
    # Note: workspaces can have any name you want, not just numbers.
    # We just use 1-10 as the default.
    bindsym $mod+Prior container prev
    bindsym $mod+Shift+Prior move container to workspace prev
    bindsym $mod+Next workspace next
    bindsym $mod+Shift+Next move container to workspace next
    bindsym $mod+Tab workspace back_and_forth

    # moving workspaces between screens:
    bindsym $mod+Left move workspace to output left
    bindsym $mod+Up move workspace to output up
    bindsym $mod+Right move workspace to output right
    bindsym $mod+Down move workspace to output down


#
# Layout stuff:
#
    # You can "split" the current object of your focus with
    # $mod+b or $mod+v, for horizontal and vertical splits
    # respectively.
    bindsym $mod+b splith
    bindsym $mod+v splitv

    # Switch the current container between different layout styles
    bindsym $mod+t layout toggle tabbed splith

    # Make the current focus fullscreen
    bindsym $mod+f fullscreen

    # Toggle the current focus between tiling and floating mode
    bindsym $mod+d floating toggle

    # Swap focus between the tiling area and the floating area
    #bindsym $mod+space focus mode_toggle

    # Move focus to the parent container
    bindsym $mod+a focus parent
#
# Scratchpad:
#
    # Sway 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+minus 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+minus scratchpad show
#
# Resizing containers:
#
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 10px
    bindsym Down resize grow height 10px
    bindsym Up resize shrink height 10px
    bindsym Right resize grow width 10px

    # Return to default mode
    bindsym Return mode "default"
    bindsym Escape mode "default"
    bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"

# Resize floating windows with mouse scroll:
bindsym --whole-window --border $mod+button4 resize shrink height 5 px or 5 ppt
bindsym --whole-window --border $mod+button5 resize grow height 5 px or 5 ppt
bindsym --whole-window --border $mod+shift+button4 resize shrink width 5 px or 5 ppt
bindsym --whole-window --border $mod+shift+button5 resize grow width 5 px or 5 ppt

#
# Volume
#
bindsym XF86AudioRaiseVolume exec pamixer -ui 2 && pamixer --get-volume > $SWAYSOCK.wob
bindsym XF86AudioLowerVolume exec pamixer -ud 2 && pamixer --get-volume > $SWAYSOCK.wob
bindsym XF86AudioMute exec pamixer --toggle-mute && ( pamixer --get-mute && echo 0 > $SWAYSOCK.wob ) || pamixer --get-volume > $SWAYSOCK.wob

#
# Player
#
    bindsym XF86AudioPlay exec playerctl play-pause
    bindsym XF86AudioNext exec playerctl next
    bindsym XF86AudioPrev exec playerctl previous
    bindsym XF86AudioStop exec playerctl stop
#
# Backlight
# install light if needed
#    bindsym XF86MonBrightnessUp exec light -A 5 && light -G | cut -d'.' -f1 > $SWAYSOCK.wob
#    bindsym XF86MonBrightnessDown exec light -U 5 && light -G | cut -d'.' -f1 > $SWAYSOCK.wob
    
#
# Screenshots
#
bindsym print exec grimshot --notify save output
bindsym Shift+print exec grimshot --notify save active
bindsym Ctrl+print exec grimshot --notify save area
bindsym Ctrl+$mod+print exec flameshot gui

