# TODO:
#
# + Super+r should rotate the selected group of windows.
# + Super+Control+{1-9} should control the size of the preselect space.
# + Super+Shift+b should balance the size of all selected nodes.

set $default_gap 20
set $left h
set $down j
set $up	k
set $right l
set $term term
set $fterm floating-term
set $menu app-launcher

output * bg $HOME/.wallpaper fill

focus_wrapping no
gaps inner $default_gap
smart_borders on|no_gaps
hide_edge_borders smart_no_gaps
set $mod Mod4

bindsym Control+Space exec makoctl dismiss
# bindsym $mod+Control+Space exec makoctl invoke
bindsym $mod+Return exec $term
bindsym $mod+shift+Return exec $fterm
bindsym $mod+t exec $term
bindsym $mod+Alt+Return exec urxvt
bindsym $mod+Shift+Alt+Return exec kitty
bindsym $mod+c kill
bindsym $mod+Shift+c kill # TODO: kill -9
bindsym $mod+Space exec $menu
bindsym $mod+Shift+r reload
bindsym $mod+Control+Escape exit
bindsym $mod+Shift+e exit
bindsym $mod+Shift+p exec pass-chooser
bindsym $mod+Control+j split v
bindsym $mod+Control+l split h
bindsym $mod+Control+f focus mode_toggle

bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right

# TODO: this should nudge if floating?
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right

bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

floating_modifier $mod normal

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

bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10

bindsym $mod+b splith
bindsym $mod+v splitv

bindsym $mod+e layout toggle split

bindsym $mod+Shift+f fullscreen
bindsym $mod+f floating toggle
bindsym $mod+s floating disable
bindsym $mod+Alt+f focus mode_toggle
bindsym $mod+p focus parent
bindsym $mod+period focus child
bindsym $mod+comma focus child
bindsym $mod+tab workspace back_and_forth

bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym XF86MonBrightnessUp exec brightnessctl set +5%
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous

bindsym $mod+Shift+v exec pactl set-source-mute @DEFAULT_SOURCE@ toggle

bindsym $mod+minus gaps inner current minus 5
bindsym $mod+plus gaps inner current plus 5
bindsym $mod+Control+Alt+h gaps horizontal current minus 5
bindsym $mod+Control+Alt+l gaps horizontal current plus 5
bindsym $mod+Control+Alt+j gaps vertical current minus 5
bindsym $mod+Control+Alt+k gaps vertical current plus 5
# TODO: this should also reset the horizontal and vertical gaps?
bindsym $mod+Control+equal gaps inner current set $default_gap

bindsym $mod+Control+Shift+l exec swaylock

mode "resize" {
	bindsym $left resize shrink width 10 px or 10 ppt
	bindsym $down resize grow height 10 px or 10 ppt
	bindsym $up resize shrink height 10 px or 10 ppt
	bindsym $right resize grow width 10 px or 10 ppt

	bindsym Left resize shrink width 10 px or 10 ppt
	bindsym Down resize grow height 10 px or 10 ppt
	bindsym Up resize shrink height 10 px or 10 ppt
	bindsym Right resize grow width 10 px or 10 ppt

	bindsym Return mode "default"
	bindsym Escape mode "default"
}

default_border pixel 5
for_window [app_id="floating_terminal"] floating enable
for_window [class="floating_terminal"] floating enable
for_window [class=".*"] layout splith

# bindsym $mod+r mode "resize"

bar {
	swaybar_command waybar
}

input * {
	repeat_delay 200
	repeat_rate 60
}

focus_follows_mouse no

client.focused          #66d9ef #66d9ef #66d9ef #66d9ef #66d9ef
client.focused_inactive #111111 #111111 #ffffff #111111 #111111
client.unfocused        #111111 #111111 #ffffff #111111 #111111

exec mako
exec_always makoctl reload
exec_always notify-send -a "Sway" -i ~/.wallpaper "Sway configuration loaded."

include $ENV_PATH/sway/config.d/*

exec mako
exec libinput-gestures -c $DOTFILES_PATH/apps/de/libinput/sway-gestures.conf