# The files we include below will be created / overwritten by nwg-shell tools
#
include variables
include outputs
include autostart
include workspaces
include keyboard
include pointer
include touchpad

# nwg-shell sway config
# Read `man 5 sway` for reference.

# border & title
for_window [title="^.*"] border pixel 1, title_format "<b> %class >> %title </b>"
default_border pixel 1

# gaps
gaps inner 4
gaps outer 0
smart_gaps on

# font
font pango:monospace 11

# mod key used for most binds
# Mod1 = Alt
# Mod4 = Super
set $Mod Mod4

# direction keys
set $up l
set $down k
set $left j
set $right semicolon

###############     Autostart      ##################

exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec hash dbus-update-activation-environment 2>/dev/null && \
    dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec ~/.azotebg

### Turn off screen on lid closed
set $laptop eDP-1
bindswitch lid:on output $laptop disable
bindswitch lid:off output $laptop enable

#############         Bindings           ##################

# kill focused window
bindsym $Mod+Shift+q kill
bindsym Mod1+q kill
bindsym Mod1+F4 kill

# core applications
bindsym $Mod+Return       exec $term
bindsym Mod1+Shift+Return exec $term
bindsym Control+Shift+t   exec $term
bindsym $Mod+t            exec $term
bindsym $Mod+F2           exec $term
bindsym $Mod+s            exec nwg-shell-config
bindsym $Mod+d            exec $dock
bindsym $Mod+e            exec $editor
bindsym $Mod+w            exec $browser
bindsym Control+space     exec $launcher
bindsym Mod1+F1           exec $launcher
bindsym $Mod+f            exec $filemanager
bindsym $Mod+c            exec swaync-client -t
bindsym Mod1+c            exec nwg-clipman
bindsym Mod1+l            exec nwg-lock
bindsym $Mod+F1           exec nwg-shell-help

# Exit menu
bindsym $Mod+x exec $exit

# Exit sway (default way to log you out of your Wayland session)
bindsym $Mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'

# screenshot
bindsym Print exec screenshot fullscreen
bindsym Control+Print exec screenshot display
bindsym Shift+Control+Print exec screenshot swappy
bindsym $Mod+Shift+Control+Print exec screenshot focused

# audio
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
bindsym XF86AudioStop exec playerctl stop
bindsym XF86AudioMute exec pactl set-sink-mute 0 toggle
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume 0 +2%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume 0 -2%

# backlight
bindsym XF86MonBrightnessUp exec light -A 5
bindsym XF86MonBrightnessDown exec light -U 5

# Reload the configuration file
bindsym $Mod+Shift+c reload

###########          Workspace Bindings          ###############

# 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

# switch to workspace - numpad alternatives
bindsym $Mod+Mod2+KP_1 workspace number 1
bindsym $Mod+Mod2+KP_2 workspace number 2
bindsym $Mod+Mod2+KP_3 workspace number 3
bindsym $Mod+Mod2+KP_4 workspace number 4
bindsym $Mod+Mod2+KP_5 workspace number 5
bindsym $Mod+Mod2+KP_6 workspace number 6
bindsym $Mod+Mod2+KP_7 workspace number 7
bindsym $Mod+Mod2+KP_8 workspace number 8

# switch to next or previous workspace
bindsym $Mod+Mod1+Left workspace prev
bindsym $Mod+Mod1+Right workspace next

# 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

# move focused container to workspace - numpad alternatives
bindsym $Mod+Shift+Mod2+KP_End   move container to workspace number 1; workspace number 1
bindsym $Mod+Shift+Mod2+KP_Down  move container to workspace number 2; workspace number 2
bindsym $Mod+Shift+Mod2+KP_Next  move container to workspace number 3; workspace number 3
bindsym $Mod+Shift+Mod2+KP_Left  move container to workspace number 4; workspace number 4
bindsym $Mod+Shift+Mod2+KP_Begin move container to workspace number 5; workspace number 5
bindsym $Mod+Shift+Mod2+KP_Right move container to workspace number 6; workspace number 7
bindsym $Mod+Shift+Mod2+KP_Home  move container to workspace number 7; workspace number 7
bindsym $Mod+Shift+Mod2+KP_Up    move container to workspace number 8; workspace number 8

############      Container/Window control  ############

# Scratchpad, Floating
bindsym $Mod+space floating toggle
floating_modifier Mod1 normal

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

# change focus
bindsym $Mod+$left  focus left
bindsym $Mod+$down  focus down
bindsym $Mod+$up    focus up
bindsym $Mod+$right focus right

# alternatively, you can use the cursor keys:
bindsym $Mod+Left   focus left
bindsym $Mod+Down   focus down
bindsym $Mod+Up     focus up
bindsym $Mod+Right  focus right

# move focus to the parent container
bindsym $Mod+p      focus parent

# move focused window
bindsym $Mod+Shift+$left  move left
bindsym $Mod+Shift+$down  move down
bindsym $Mod+Shift+$up    move up
bindsym $Mod+Shift+$right move right

# alternatively, you can use the cursor keys:
bindsym $Mod+Shift+Up    move up
bindsym $Mod+Shift+Down  move down
bindsym $Mod+Shift+Left  move left
bindsym $Mod+Shift+Right move right

# Resizing containers
mode "resize" {
    bindsym $left resize shrink width 10px
    bindsym $down resize grow height 10px
    bindsym $up resize shrink height 10px
    bindsym $right resize grow width 10px

    # Ditto, with arrow keys
    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 "resize"

# Size
bindsym Mod1+Up    resize shrink height 10 px or 1 ppt
bindsym Mod1+Down  resize grow   height 10 px or 1 ppt
bindsym Mod1+Left  resize shrink width  10 px or 1 ppt
bindsym Mod1+Right resize grow   width  10 px or 1 ppt

# layout toggle
bindsym Mod1+Tab layout toggle tabbed stacking split
bindsym $Mod+Tab layout toggle splitv splith

# switch to workspace with urgent window
for_window [urgent="latest"] focus
focus_on_window_activation   focus

# container layout
bindsym $Mod+h split h
bindsym $Mod+v split v
bindsym $Mod+Shift+t layout tabbed
bindsym $Mod+Shift+s layout stacking
bindsym $Mod+Shift+h layout toggle split

default_orientation horizontal

# make the current focus fullscreen
bindsym $Mod+Shift+f fullscreen

###############      Border & Gaps     ###############

# changing border style
bindsym $Mod+b border toggle

# change gaps
bindsym $Mod+plus                gaps inner current plus  5
bindsym $Mod+minus               gaps inner current minus 5
bindsym Mod1+plus                gaps outer current plus  5
bindsym Mod1+minus               gaps outer current minus 5

bindsym $Mod+KP_Add              gaps inner current plus  5
bindsym $Mod+KP_Subtract         gaps inner current minus 5
bindsym Mod1+KP_Add              gaps outer current plus  5
bindsym Mod1+KP_Subtract         gaps outer current minus 5

############    application settings   ############

# focus, floating, & sticky
for_window [app_id="(?i)(?:blueman-manager|azote|gnome-disks)"] floating enable
for_window [app_id="(?i)(?:pavucontrol|nm-connection-editor|gsimplecal|galculator)"] floating enable
for_window [app_id="(?i)(?:firefox|chromium)"] border none
for_window [title="(?i)(?:copying|deleting|moving)"] floating enable

popup_during_fullscreen smart
