## general
# exit sway
bindsym $mod+Ctrl+{key/quit/low} exit
# reload the configuration file
bindsym $mod+Alt+Shift+{key/reload_config/low} reload
# general command input
bindsym $mod+{key/command/colon} exec sway-command-input
# lock the screen
bindsym $mod+{key/backspace/Backspace} exec swaylock
# suspend
bindsym --locked $mod+Ctrl+{key/backspace/Backspace} exec systemctl suspend
# focus first window with urgent flag
bindsym $mod+{key/u} [urgent="first"] focus
# do not disturb toggle
bindsym $mod+{key/escape/Escape} exec do-not-disturb toggle
# toggle Pomodoro session
bindsym $mod+Shift+{key/escape/Escape} exec pomodoro toggle
# stop task
bindsym $mod+Ctrl+{key/escape/Escape} exec task stop
# select region and grab screenshot
bindsym $mod+{key/g} exec screenshot
# toggle bar status mode
bindsym $mod+{key/tabulation/Tab} exec i3blocks-mode toggle
# run quick command
bindsym $mod+{key/return/Return} exec sway-quick-command
# toggle idle inhibitor on current window
bindsym $mod+{key/i} exec sway-toggle-window-idle-inhibitor visible \
&& pkill -x -RTMIN+8 i3blocks
# toggle night mode
bindsym --locked $mod+{key/t} exec night-mode toggle
# toggle presentation mode
bindsym $mod+Ctrl+{key/p} exec presentation-mode toggle
# Press enter in the presentation window
bindsym $mod+{key/bracketright} exec "swaymsg -q -- mark --add presentation_main \
&& swaymsg -q '[title=\"sway_presentation\"]' focus \
&& ydotool sleep 100 , key enter 2> /dev/null \
&& swaymsg -q '[con_mark=\"presentation_main\"]' focus"
## notifications
bindsym --locked $mod+Ctrl+{key/close/low} exec makoctl dismiss
bindsym --locked $mod+Ctrl+Shift+{key/close/low} exec makoctl dismiss --all
## Commands
mode "-- Commands --" {
bindsym {key/space/Space} mode "default", exec bemenu-run -p 'Run'
bindsym {key/backspace/Backspace} mode "default", exec system-menu
bindsym {key/c} mode "default", exec {app/chat_client}
bindsym {key/d} mode "default", exec open-document
bindsym {key/e} mode "default", exec {app/terminal_emulator}
bindsym {key/h} mode "default", exec {app/system_monitor}
bindsym {key/j} mode "default", exec launch-tmux-env projects
bindsym {key/m} mode "default", exec {app/mail_client}
bindsym {key/o} mode "default", exec copy-otp
bindsym {key/p} mode "default", exec copy-password
bindsym {key/s} mode "default", exec play-somafm
bindsym {key/t} mode "default", exec sway-quick-command start-task
bindsym {key/w} mode "default", exec {app/web_browser}
bindsym Ctrl+{key/p} mode "default", exec {app/presentation}
bindsym {key/return/Return} mode "default"
bindsym {key/escape/Escape} mode "default"
}
bindsym $mod+{key/space/Space} mode "-- Commands --"
## floating
floating_modifier $mod normal
bindsym $mod+Shift+{key/f} floating toggle
bindsym $mod+{key/f} focus mode_toggle
## scratchpad
bindsym $mod+Shift+{key/d} move scratchpad
bindsym $mod+{key/d} scratchpad show
## workspaces management (lowercase)
bindsym $mod+{key/create/low} exec sway-create-workspace
bindsym $mod+{key/rename/low} exec sway-rename-workspace
# select
bindsym $mod+{key/alternate/low} workspace back_and_forth
bindsym $mod+{key/next/low} workspace next_on_output
bindsym $mod+{key/right/low} workspace next_on_output
bindsym $mod+{key/previous/low} workspace prev_on_output
bindsym $mod+{key/left/low} workspace prev_on_output
bindsym $mod+{key/1} workspace number 1
bindsym $mod+{key/2} workspace number 2
bindsym $mod+{key/3} workspace number 3
bindsym $mod+{key/4} workspace number 4
bindsym $mod+{key/5} workspace number 5
bindsym $mod+{key/6} workspace number 6
bindsym $mod+{key/7} workspace number 7
bindsym $mod+{key/8} workspace number 8
bindsym $mod+{key/9} workspace number 9
bindsym $mod+{key/0} workspace number 10
# split
bindsym $mod+{key/split_vertical/low} splith, exec {app/terminal_emulator}
bindsym $mod+{key/split_horizontal/low} splitv, exec {app/terminal_emulator}
# move mode
mode "-- move --" {
bindsym {key/next/low} exec sway-move-workspace-direction next
bindsym {key/right/low} exec sway-move-workspace-direction next
bindsym {key/previous/low} exec sway-move-workspace-direction prev
bindsym {key/left/low} exec sway-move-workspace-direction prev
bindsym {key/1} exec sway-move-workspace-index 1
bindsym {key/2} exec sway-move-workspace-index 2
bindsym {key/3} exec sway-move-workspace-index 3
bindsym {key/4} exec sway-move-workspace-index 4
bindsym {key/5} exec sway-move-workspace-index 5
bindsym {key/6} exec sway-move-workspace-index 6
bindsym {key/7} exec sway-move-workspace-index 7
bindsym {key/8} exec sway-move-workspace-index 8
bindsym {key/9} exec sway-move-workspace-index 9
bindsym {key/0} exec sway-move-workspace-index 0
bindsym {key/return/Return} mode "default"
bindsym {key/escape/Escape} mode "default"
}
bindsym $mod+{key/move/low} mode "-- move --"
# layout mode
mode "-- layout --" {
bindsym {key/1} layout splith
bindsym {key/2} layout splitv
bindsym {key/3} layout tabbed
bindsym {key/return/Return} mode "default"
bindsym {key/escape/Escape} mode "default"
}
bindsym $mod+{key/layout/low} mode "-- layout --"
## windows management (uppercase)
bindsym $mod+Shift+{key/create/low} exec {app/terminal_emulator}
bindsym $mod+Shift+{key/close/low} kill
bindsym $mod+Shift+{key/zoom/low} fullscreen
# select
bindsym $mod+Shift+{key/next/low} focus next
bindsym $mod+Shift+{key/previous/low} focus prev
bindsym $mod+Shift+{key/left/low} focus left
bindsym $mod+Shift+{key/down/low} focus down
bindsym $mod+Shift+{key/up/low} focus up
bindsym $mod+Shift+{key/right/low} focus right
# move mode
mode "-- MOVE --" {
# move focused window within workspace
bindsym Shift+{key/left/low} move left
bindsym Shift+{key/down/low} move down
bindsym Shift+{key/up/low} move up
bindsym Shift+{key/right/low} move right
# move focused container to workspace and follow
bindsym {key/1} move container to workspace number 1, workspace number 1
bindsym {key/2} move container to workspace number 2, workspace number 2
bindsym {key/3} move container to workspace number 3, workspace number 3
bindsym {key/4} move container to workspace number 4, workspace number 4
bindsym {key/5} move container to workspace number 5, workspace number 5
bindsym {key/6} move container to workspace number 6, workspace number 6
bindsym {key/7} move container to workspace number 7, workspace number 7
bindsym {key/8} move container to workspace number 8, workspace number 8
bindsym {key/9} move container to workspace number 9, workspace number 9
bindsym {key/0} move container to workspace number 10, workspace number 10
bindsym {key/create/low} exec sway-move-window-new-workspace
bindsym {key/alternate/low} move container to workspace back_and_forth, workspace back_and_forth
bindsym {key/next/low} move container to workspace next_on_output, workspace next_on_output
bindsym {key/right/low} move container to workspace next_on_output, workspace next_on_output
bindsym {key/previous/low} move container to workspace prev_on_output, workspace prev_on_output
bindsym {key/left/low} move container to workspace prev_on_output, workspace prev_on_output
bindsym {key/return/Return} mode "default"
bindsym {key/escape/Escape} mode "default"
}
bindsym $mod+Shift+{key/move/low} mode "-- MOVE --"
# resize mode
mode "-- RESIZE --" {
bindsym Shift+{key/left/low} resize shrink width 10 px or 10 ppt
bindsym Shift+{key/up/low} resize grow height 10 px or 10 ppt
bindsym Shift+{key/down/low} resize shrink height 10 px or 10 ppt
bindsym Shift+{key/right/low} resize grow width 10 px or 10 ppt
bindsym {key/return/Return} mode "default"
bindsym {key/escape/Escape} mode "default"
}
bindsym $mod+Shift+{key/resize/low} mode "-- RESIZE --"
## XF86 keys
# Volume keys
bindsym --locked {key/XF86AudioRaiseVolume} exec amixer -q set Master unmute 5%+ \
&& pkill -x -RTMIN+2 i3blocks
bindsym --locked {key/XF86AudioLowerVolume} exec amixer -q set Master unmute 5%- \
&& pkill -x -RTMIN+2 i3blocks
bindsym --locked {key/XF86AudioMute} exec amixer -q set Master toggle \
&& pkill -x -RTMIN+2 i3blocks
# Microphone key
bindsym --locked {key/XF86AudioMicMute} exec amixer -q set Capture toggle \
&& pkill -x -RTMIN+7 i3blocks
bindsym --locked $mod+{key/F4} exec amixer -q set Capture toggle \
&& pkill -x -RTMIN+7 i3blocks
# Backlight keys
bindsym --locked {key/XF86MonBrightnessUp} exec light -A 5
bindsym --locked {key/XF86MonBrightnessDown} exec light -U 5
# Media keys
bindsym --locked {key/XF86AudioPlay} exec mpc toggle \
&& pkill -x -RTMIN+4 i3blocks
bindsym --locked {key/XF86AudioNext} exec mpc next \
&& pkill -x -RTMIN+4 i3blocks
bindsym --locked {key/XF86AudioPrev} exec mpc prev \
&& pkill -x -RTMIN+4 i3blocks