##################################
# STARTING CONFIGURATION
##################################

# alterning workspace between each screen
workspace 1 output DVI-I-1
workspace 2 output HDMI-0
workspace 3 output DVI-I-1
workspace 4 output HDMI-0
workspace 5 output DVI-I-1
workspace 6 output DVI-I-1
workspace 7 output DVI-I-1
workspace 8 output DVI-I-1
workspace 9 output DVI-I-1

# ALSA key binding (media keys do not even have keycode...)
bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -D hw:PCH -M sset Master 2%+
bindsym XF86AudioLowerVolume exec --no-startup-id amixer -D hw:PCH -M sset Master 2%-
bindsym XF86AudioMute exec --no-startup-id amixer -D hw:PCH -M sset Master toggle
bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause
bindsym XF86AudioPrev exec --no-startup-id playerctl previous
bindsym XF86AudioNext exec --no-startup-id playerctl next

##################################
# PROGRAMS STARTED AUTOMATICALLY
##################################

# Time tracking
exec hamster

# cadence will take care of all we need :
# - Config tells Cadence to start LADISH, export MIDI hw and start A2J ;
# - LADISH implies JACK starts, then it will starts needed apps (e.g. Non-Mixer)
exec --no-startup-id cadence-session-start --start
exec --no-startup-id catia

# automate port mapping for applications
exec --no-startup-id jack-matchmaker -p ~/.config/jack-matchmaker/patterns

# Start ALSA/Jack bridge for RODE mic
exec_always --no-startup-id zita-a2j -d hw:Mini -j Rode -c 1

# Set front and headphones to 100%, let master alone change with bindsyms
exec --no-startup-id amixer -D hw:PCH -M sset Front 100%
exec --no-startup-id amixer -D hw:PCH -M sset Headphone 100%

##################################
# BINDINGS FOR STARTING PROGRAMS
##################################

bindsym $mod+b exec --no-startup-id ~/.config/i3/scripts/brightness.sh

##################################
# BINDINGS FOR STANDARD OPERATIONS
##################################

##################################
# OPERATIONS FOR SPECIFIC WINDOWS
##################################

# Scratchpad
for_window [class="Hamster" window_type="normal"] floating enable, move scratchpad
for_window [class="Non-Mixer"] mark "mixer", move scratchpad
for_window [class="Catia*"] mark "jack", move scratchpad
bindsym $mod+Shift+j [con_mark="jack"] scratchpad show, move position center
bindsym $mod+Shift+v [con_mark="mixer"] scratchpad show, move position center
bindsym $mod+Shift+p [class="Hamster" window_type="normal"] scratchpad show, move position center

# Adequate sizes for Desktop
for_window [class="thunderbird" window_type="normal"] resize set 1600 850
for_window [class="Signal"] resize set 1600 850
for_window [class="Hamster" window_type="normal"] resize set 1600 850e
for_window [class="Telegram"] resize set 1600 850
for_window [class="Pianoteq STAGE"] floating enable, move position center

assign [class="Pianoteq STAGE"] → number 6