Tiling Wayland compositor and replacement for the i3 window manager
Logo key. Use Mod1 for Alt.
set $mod Mod4
Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
Shortcut for opening applications
set $open exec <<launcher>>
Set keyboard layout:
input * {
xkb_layout cz
xkb_variant coder
xkb_numlock enabled
xkb_options ctrl:nocaps,compose:rctrl
Setup touchpad:
dwt enabled
tap enabled
natural_scroll enabled
middle_emulation enabled
}
Hide the cursor after timeout:
seat * {
hide_cursor 5000
}
start a Distrobox in terminal
bindsym $mod+Return exec <<terminal>> distrobox enter termbox
start a terminal
bindsym $mod+t exec <<terminal>>
kill focused window
bindsym $mod+Shift+q kill
start your web browser
bindsym $mod+w $open <<web_browser>>
start your file browser
bindsym $mod+f $open <<file_browser>>
start emacs
bindsym $mod+e exec flatpak run --command=emacsclient org.gnu.emacs -n -c -a emacs
open org-agenda
bindsym $mod+a exec flatpak run --command=emacsclient org.gnu.emacs -ce '(my-org-agenda)'
start YouTube player
bindsym $mod+y exec freetube
attach tmux session with music player
bindsym $mod+m exec sh ~/bin/mplayer
Drag floating windows by holding down $mod and left mouse button. Resize them with right mouse button + $mod. Despite the name, also works for non-floating windows. Change normal to inverse to use left mouse button for resizing and right mouse button for dragging.
floating_modifier $mod normal
reload the configuration file
bindsym $mod+Shift+c reload
print screen
bindsym Print exec grim ~/Pictures/screen-shots/$(date +%F-%H:%M-%S).png
exit sway (logs 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'
bindsym $mod+Shift+p exec swaynag -t warning -m 'Power-off?' -b 'Yes' 'shutdown -P "now"'
bindsym $mod+Shift+r exec swaynag -t warning -m 'Reboot?' -b 'Yes' 'shutdown -r "now"'
lock screen
bindsym $mod+Shift+s exec sh ~/.config/swaylock/lock.sh
start your app launcher
bindsym $mod+f1 exec fuzzel
Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
move the focused window with the same, but add 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
ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
switch output
bindsym $mod+space focus output right
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
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
Note: workspaces can have any name you want, not just numbers. We just use 1-10 as the default.
You can “split” the current object of your focus with $mod+b or $mod+v, for horizontal and vertical splits respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
Switch the current container between different layout styles
#bindsym $mod+s layout stacking
#bindsym $mod+c layout toggle split
Make the current focus fullscreen
bindsym $mod+Shift+f fullscreen
Toggle the current focus between tiling and floating mode
#bindsym $mod+Shift+space floating toggle
Swap focus between the tiling area and the floating area
#bindsym $mod+space focus mode_toggle
move focus to the parent container
#bindsym $mod+p focus parent
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+minus 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+minus scratchpad show
mode "resize" {
left will shrink the containers width right will grow the containers width up will shrink the containers height down will grow the containers height
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"
}
enter resize mode
bindsym $mod+r mode "resize"
Create fifo for wob
:
set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock
Audio
set $wob_volume wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/^Volume: \([01]\)\.\(.*\).*$/\1\2/;s/\[MUTED\]/muted/' > $WOBSOCK
bindsym --locked XF86AudioRaiseVolume exec wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ && $wob_volume
bindsym --locked XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- && $wob_volume
bindsym --locked XF86AudioMute exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && $wob_volume
# wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
Monitor brightness (https://github.com/haikarainen/light)
bindsym XF86MonBrightnessUp exec light -A 10 & light & light -G | cut -d'.' -f1 > $WOBSOCK
bindsym XF86MonBrightnessDown exec light -U 10 & light & light -G | cut -d'.' -f1 > $WOBSOCK
Keyboard brightness
#bindsym XF86KbdBrightnessUp exec light -s 'sysfs/leds/asus::kbd_backlight' -A 40 & light & light -s 'sysfs/leds/asus::kbd_backlight' -G | cut -d'.' -f1 > $SWAYSOCK.wob
#bindsym XF86KbdBrightnessDown exec light -s 'sysfs/leds/asus::kbd_backlight' -U 40 & light & light -s 'sysfs/leds/asus::kbd_backlight' -G | cut -d'.' -f1 > $SWAYSOCK.wob
Set background color
output * bg #<<base03>> solid_color
# Property Name Border BG Text Indicator Child Border
client.focused #<<base05>> #<<base0D>> #<<base00>> #<<base0D>> #<<base0D>>
client.focused_inactive #<<base01>> #<<base01>> #<<base05>> #<<base03>> #<<base01>>
client.unfocused #<<base01>> #<<base00>> #<<base05>> #<<base01>> #<<base01>>
client.urgent #<<base08>> #<<base08>> #<<base00>> #<<base08>> #<<base08>>
client.placeholder #<<base00>> #<<base00>> #<<base05>> #<<base00>> #<<base00>>
client.background #<<base07>>
smart_borders on
default_border pixel 5
font <<font>> 12
gaps inner 5
smart_gaps on
Start the sway-session.target
which will trigger the execution of daemons related to Sway.
exec "systemctl --user import-environment; systemctl --user start sway-session.target"
include ~/.config/sway/config.d/*.conf