# Default config for sway # # Copy this to ~/.config/sway/config and edit it to your liking. # # Read `man 5 sway` for a complete reference. ### Variables # # Logo key. Use Mod1 for Alt. set $wm_mod Mod4+Control set $launch Mod4+Alt # Home row direction keys, like vim set $left a set $down s set $up w set $right d # Your preferred terminal emulator set $term foot # Your preferred application launcher # Note: pass the final command to swaymsg so that the resulting window can be opened # on the original workspace that the command was run on. set $menu dmenu_path | dmenu | xargs swaymsg exec -- include /etc/sway/config-vars.d/* ### Output configuration # # Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill # # Example configuration: # # output HDMI-A-1 resolution 1920x1080 position 1920,0 # # You can get the names of your outputs by running: swaymsg -t get_outputs ### Idle configuration # exec swayidle -w \ timeout 300 'swaylock -f -c 000000' \ timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ before-sleep 'swaylock -f -c 000000' # This will lock your screen after 300 seconds of inactivity, then turn off # your displays after another 300 seconds, and turn your screens back on when # resumed. It will also lock your screen before your computer goes to sleep. ### Input configuration # input type:keyboard { xkb_options ctrl:nocaps,shift:both_capslock } input type:touchpad { tap enabled } # You can get the names of your inputs by running: swaymsg -t get_inputs # Read `man 5 sway-input` for more information about this section. ### Key bindings # # Basics: # # Start a terminal bindsym $launch+Return exec $term bindsym $launch+t exec $term # Start Emacs bindsym $launch+e exec emacs # Start a browser bindsym $launch+f exec firefox --private-window bindsym $launch+Shift+f exec firefox # Kill focused window bindsym $wm_mod+q kill # Start your launcher bindsym $launch+space exec $menu # Drag floating windows by holding down Super and left mouse button. # Resize them with right mouse button + Super. # 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 Mod4 normal # Reload the configuration file bindsym $wm_mod+r reload # Lock screen # Black bindsym $wm_mod+l exec swaylock -f -c 000000 # Random color bindsym $wm_mod+Shift+l exec swaylock -f -c $(printf "%02x%02x%02x" $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256))) # Transparent bindsym $wm_mod+semicolon exec swaylock -f -c 00000000 # Exit sway (logs you out of your Wayland session) bindsym $wm_mod+Delete 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 Alt+Ctrl+Delete 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 Alt+Ctrl+Backspace exec swaymsg exit # # Moving around: # # Move your focus around bindsym $wm_mod+$left focus left bindsym $wm_mod+$down focus down bindsym $wm_mod+$up focus up bindsym $wm_mod+$right focus right # Or use the arrow keys bindsym $wm_mod+Left focus left bindsym $wm_mod+Down focus down bindsym $wm_mod+Up focus up bindsym $wm_mod+Right focus right # Move the focused window with the same, but add Shift bindsym $wm_mod+Shift+$left move left bindsym $wm_mod+Shift+$down move down bindsym $wm_mod+Shift+$up move up bindsym $wm_mod+Shift+$right move right # Ditto, with arrow keys bindsym $wm_mod+Shift+Left move left bindsym $wm_mod+Shift+Down move down bindsym $wm_mod+Shift+Up move up bindsym $wm_mod+Shift+Right move right # # Workspaces: # # Switch to workspace bindsym $wm_mod+1 workspace number 1 bindsym $wm_mod+2 workspace number 2 bindsym $wm_mod+3 workspace number 3 bindsym $wm_mod+4 workspace number 4 bindsym $wm_mod+5 workspace number 5 bindsym $wm_mod+6 workspace number 6 bindsym $wm_mod+7 workspace number 7 bindsym $wm_mod+8 workspace number 8 bindsym $wm_mod+9 workspace number 9 bindsym $wm_mod+0 workspace number 10 # Move focused container to workspace bindsym $wm_mod+Shift+1 move container to workspace number 1 bindsym $wm_mod+Shift+2 move container to workspace number 2 bindsym $wm_mod+Shift+3 move container to workspace number 3 bindsym $wm_mod+Shift+4 move container to workspace number 4 bindsym $wm_mod+Shift+5 move container to workspace number 5 bindsym $wm_mod+Shift+6 move container to workspace number 6 bindsym $wm_mod+Shift+7 move container to workspace number 7 bindsym $wm_mod+Shift+8 move container to workspace number 8 bindsym $wm_mod+Shift+9 move container to workspace number 9 bindsym $wm_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. # # Layout stuff: # # You can "split" the current object of your focus horizontally # or vertically. bindsym $wm_mod+h splith bindsym $wm_mod+v splitv # Switch the current container between different layout styles bindsym $wm_mod+z layout tabbed bindsym $wm_mod+x layout stacking bindsym $wm_mod+c layout toggle split # Make the current focus fullscreen bindsym $wm_mod+f fullscreen # Toggle the current focus between tiling and floating mode bindsym $wm_mod+Shift+space floating toggle # Swap focus between the tiling area and the floating area bindsym $wm_mod+space focus mode_toggle # Move focus to the parent container bindsym $wm_mod+bracketleft focus parent bindsym $wm_mod+bracketright focus child # # Scratchpad: # # 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 $wm_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 $wm_mod+minus scratchpad show # # Resizing containers: # 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" } bindsym $wm_mod+Equal mode "resize" # # Setup input method # exec fcitx5-remote -r bindsym Mod4+1 exec fcitx5-remote -s keyboard-us bindsym Mod4+2 exec fcitx5-remote -s keyboard-il bindsym Mod4+3 exec fcitx5-remote -s mozc bindsym Mod4+4 exec fcitx5-remote -s keyboard-fr # # Hook up multimedia keys # bindsym XF86TouchpadToggle exec swaymsg input type:touchpad events toggle enabled disabled bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% # # Start a password manager in the scratchpad # for_window [class="KeePassXC" title="KeePassXC" window_type="normal"] move to scratchpad exec keepassxc # # Status Bar: # # Read `man 5 sway-bar` for more information about this section. bar { position top # When the status_command prints a new line to stdout, swaybar updates. # The default just shows the current date and time. status_command while :; do sleep 0.5 & echo $(print-status); wait; done colors { statusline #ffffff background #323232 inactive_workspace #32323200 #32323200 #5c5c5c } } workspace_layout tabbed for_window [class="."] inhibit_idle fullscreen for_window [app_id="."] inhibit_idle fullscreen include /etc/sway/config.d/*