###############################################################################
# Window and Workspace Configuration
###############################################################################

## Modify // Window Position // <><Shift> ↑ ↓ ← → ##
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

## Modify // Window Position // <><Shift> k j h l ##
set_from_resource $wm.binding.move_left wm.binding.move_left Shift+h
set_from_resource $wm.binding.move_right wm.binding.move_right Shift+l
set_from_resource $wm.binding.move_up wm.binding.move_up Shift+k
set_from_resource $wm.binding.move_down wm.binding.move_down Shift+j
bindsym $mod+$wm.binding.move_left move left
bindsym $mod+$wm.binding.move_down move down
bindsym $mod+$wm.binding.move_up move up
bindsym $mod+$wm.binding.move_right move right

## Modify // Containing Workspace // <><Ctrl><Shift> ↑ ↓ ← → ##
set_from_resource $wm.binding.move_workspace_output_left wm.binding.move_workspace_output_left Ctrl+Shift+Left
set_from_resource $wm.binding.move_workspace_output_right wm.binding.move_workspace_output_right Ctrl+Shift+Right
set_from_resource $wm.binding.move_workspace_output_up wm.binding.move_workspace_output_up Ctrl+Shift+Up
set_from_resource $wm.binding.move_workspace_output_down wm.binding.move_workspace_output_down Ctrl+Shift+Down
bindsym $mod+$wm.binding.move_workspace_output_left move workspace to output left
bindsym $mod+$wm.binding.move_workspace_output_right move workspace to output right
bindsym $mod+$wm.binding.move_workspace_output_up move workspace to output up
bindsym $mod+$wm.binding.move_workspace_output_down move workspace to output down

## Modify // Containing Workspace // <><Ctrl><Shift> k j h l ##
set_from_resource $wm.binding.take_left wm.binding.take_left Ctrl+Shift+h
set_from_resource $wm.binding.take_right wm.binding.take_right Ctrl+Shift+l
set_from_resource $wm.binding.take_up wm.binding.take_up Ctrl+Shift+k
set_from_resource $wm.binding.take_down wm.binding.take_down Ctrl+Shift+j
bindsym $mod+$wm.binding.take_left move workspace to output left
bindsym $mod+$wm.binding.take_down move workspace to output down
bindsym $mod+$wm.binding.take_up move workspace to output up
bindsym $mod+$wm.binding.take_right move workspace to output right

## Modify // Vertical Window Orientation // <> v ##
set_from_resource $wm.binding.split_v wm.binding.split_v v
bindsym $mod+$wm.binding.split_v split vertical

## Modify // Horizontal Window Orientation // <> g ##
set_from_resource $wm.binding.split_h wm.binding.split_h g
bindsym $mod+$wm.binding.split_h split horizontal

## Modify // Toggle Window Orientation // <> Backspace ##
set_from_resource $wm.binding.orientation_toggle wm.binding.orientation_toggle BackSpace
bindsym $mod+$wm.binding.orientation_toggle split toggle

## Modify // Window Fullscreen Toggle // <> f ##
set_from_resource $wm.binding.fullscreen_toggle wm.binding.fullscreen_toggle f
bindsym $mod+$wm.binding.fullscreen_toggle fullscreen toggle

## Modify // Window Floating Toggle // <><Shift> f ##
set_from_resource $wm.binding.float_toggle wm.binding.float_toggle Shift+f
bindsym $mod+$wm.binding.float_toggle floating toggle

## Modify // Move to Scratchpad // <><Ctrl> m ##
set_from_resource $wm.binding.move_scratchpad wm.binding.move_scratchpad Ctrl+m
bindsym $mod+$wm.binding.move_scratchpad move to scratchpad

## Modify // Tile/Float Focus Toggle // <><Shift> t ##
set_from_resource $wm.binding.focus_toggle wm.binding.focus_toggle Shift+t
bindsym $mod+$wm.binding.focus_toggle focus mode_toggle

## Modify // Window Layout Mode // <> t ##
set_from_resource $wm.binding.layout_mode wm.binding.layout_mode t
bindsym $mod+$wm.binding.layout_mode layout toggle tabbed splith splitv

## Modify // Move Window to Workspace 1 - 10 // <><Shift> 0..9 ##
bindsym $mod+Shift+$ws1_key move container to workspace number $ws1
bindsym $mod+Shift+$ws2_key move container to workspace number $ws2
bindsym $mod+Shift+$ws3_key move container to workspace number $ws3
bindsym $mod+Shift+$ws4_key move container to workspace number $ws4
bindsym $mod+Shift+$ws5_key move container to workspace number $ws5
bindsym $mod+Shift+$ws6_key move container to workspace number $ws6
bindsym $mod+Shift+$ws7_key move container to workspace number $ws7
bindsym $mod+Shift+$ws8_key move container to workspace number $ws8
bindsym $mod+Shift+$ws9_key move container to workspace number $ws9
bindsym $mod+Shift+$ws10_key move container to workspace number $ws10
## Modify // Move Window to Workspace 11 - 19// <><Ctrl><Shift> 1..9 ##
bindsym $mod+Shift+Ctrl+$ws1_key move container to workspace number $ws11
bindsym $mod+Shift+Ctrl+$ws2_key move container to workspace number $ws12
bindsym $mod+Shift+Ctrl+$ws3_key move container to workspace number $ws13
bindsym $mod+Shift+Ctrl+$ws4_key move container to workspace number $ws14
bindsym $mod+Shift+Ctrl+$ws5_key move container to workspace number $ws15
bindsym $mod+Shift+Ctrl+$ws6_key move container to workspace number $ws16
bindsym $mod+Shift+Ctrl+$ws7_key move container to workspace number $ws17
bindsym $mod+Shift+Ctrl+$ws8_key move container to workspace number $ws18
bindsym $mod+Shift+Ctrl+$ws9_key move container to workspace number $ws19

# move focused container to workspace, move to workspace
## Modify // Carry Window to Workspace 1 - 10// <><Alt> 0..9 ##
bindsym $mod+$alt+$ws1_key move container to workspace number $ws1; workspace number $ws1
bindsym $mod+$alt+$ws2_key move container to workspace number $ws2; workspace number $ws2
bindsym $mod+$alt+$ws3_key move container to workspace number $ws3; workspace number $ws3
bindsym $mod+$alt+$ws4_key move container to workspace number $ws4; workspace number $ws4
bindsym $mod+$alt+$ws5_key move container to workspace number $ws5; workspace number $ws5
bindsym $mod+$alt+$ws6_key move container to workspace number $ws6; workspace number $ws6
bindsym $mod+$alt+$ws7_key move container to workspace number $ws7; workspace number $ws7
bindsym $mod+$alt+$ws8_key move container to workspace number $ws8; workspace number $ws8
bindsym $mod+$alt+$ws9_key move container to workspace number $ws9; workspace number $ws9
bindsym $mod+$alt+$ws10_key move container to workspace number $ws10; workspace number $ws10
## Modify // Carry Window to Workspace 11 - 19 // <><Alt><Ctrl> 1..9 ##
bindsym $mod+$alt+Ctrl+$ws1_key move container to workspace number $ws11; workspace number $ws11
bindsym $mod+$alt+Ctrl+$ws2_key move container to workspace number $ws12; workspace number $ws12
bindsym $mod+$alt+Ctrl+$ws3_key move container to workspace number $ws13; workspace number $ws13
bindsym $mod+$alt+Ctrl+$ws4_key move container to workspace number $ws14; workspace number $ws14
bindsym $mod+$alt+Ctrl+$ws5_key move container to workspace number $ws15; workspace number $ws15
bindsym $mod+$alt+Ctrl+$ws6_key move container to workspace number $ws16; workspace number $ws16
bindsym $mod+$alt+Ctrl+$ws7_key move container to workspace number $ws17; workspace number $ws17
bindsym $mod+$alt+Ctrl+$ws8_key move container to workspace number $ws18; workspace number $ws18
bindsym $mod+$alt+Ctrl+$ws9_key move container to workspace number $ws19; workspace number $ws19

set_from_resource $wm.workspace.auto_back_and_forth wm.workspace.auto_back_and_forth no
workspace_auto_back_and_forth $wm.workspace.auto_back_and_forth

# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
