#+title: Sway Configuration * Variables Use =super= as modifier key. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes set $mod Mod4 #+end_src Use =vi= motions as directional inputs. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes set $left h set $down j set $up k set $right l #+end_src Use =foot= as default terminal. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes set $term foot #+end_src Use =wofi= as app launcher. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes set $menu fuzzel #+end_src * Startup Application Use =dbus= environment. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes exec --no-startup-id dbus-update-activation-environment --all #+end_src Use =mako= as notification daemon. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes exec mako #+end_src Launch PipeWire without =systemd=. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes exec gentoo-pipewire-launcher & #+end_src Launch =blueman-applet= as Bluetooth daemon. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes exec blueman-applet #+end_src Launch music player daemon. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes exec mpd #+end_src Launch =mpdscribble= as scrobbler daemon. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes exec mpdscribble #+end_src Launch Emacs daemon. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes exec emacs --daemon #+end_src Launch Proton Mail Bridge at login. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes exec proton-mail-bridge --noninteractive #+end_src * Display I use a vertical monitor on the left and horizontal monitor on the right. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes output DP-2 resolution 2560x1440 position 1080 100 output HDMI-A-2 resolution 1920x1080 transform 90 position 0 0 #+end_src Use the file at =~/.wallpaper= as my wallpaper. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes output * bg ~/.wallpaper fill #+end_src Remove borders from windows. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes default_border none default_floating_border none font pango:monospace 1 #+end_src Use 10 pixel gaps. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes gaps inner 10 #+end_src Use =waybar= as a top bar. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bar { position top status_command waybar mode invisible } #+end_src * Input Use pointer acceleration. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes input * { accel_profile "adaptive" pointer_accel -.5 } #+end_src * Controls Add ability to lock the screen with =swaylock=. Turn off the screen after 15 seconds on lock screen. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+Control+l exec swaylock --ignore-empty-password --show-failed-attempts --image ~/.wallpaper exec swayidle -w timeout 15 'if pgrep -x swaylock; then swaymsg "output * power off"; fi' resume 'swaymsg "output * power on"' #+end_src Add keybinding to open a terminal emulator. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+Return exec $term #+end_src Add keybinding for killing a window. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+Shift+q kill #+end_src Add keybinding for opening an app launcher. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+d exec $menu #+end_src Holding the modifier key allows moving a window. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes floating_modifier $mod normal #+end_src Add keybinding for reloading the configuration. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+Shift+c reload #+end_src Add keybinding to launch logout/power off/restart [[file:powerprompt.org][prompt]] which also activates with the power key. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+Shift+e exec bash ~/.config/sway/powerprompt bindsym XF86PowerOff exec bash ~/.config/sway/powerprompt #+end_src Change focus keybindings. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+$left focus left bindsym $mod+$down focus down bindsym $mod+$up focus up bindsym $mod+$right focus right bindsym $mod+Left focus left bindsym $mod+Down focus down bindsym $mod+Up focus up bindsym $mod+Right focus right #+end_src Move window keybindings. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+Shift+$left move left bindsym $mod+Shift+$down move down bindsym $mod+Shift+$up move up bindsym $mod+Shift+$right move right bindsym $mod+Shift+Left move left bindsym $mod+Shift+Down move down bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right #+end_src Change workspace keybindings. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes 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 #+end_src Move window to workspace keybindings. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes 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 #+end_src Set split direction keybindings. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+v splith bindsym $mod+s splitv #+end_src Toggle layout keybindings. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+e layout toggle split #+end_src Define full screen keybinding. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+f fullscreen #+end_src Define toggle floating keybinding. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+Shift+space floating toggle #+end_src Move focus between floating and tiled layer keybinding. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+space focus mode_toggle #+end_src Focus on the parent window keybinding. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+a focus parent #+end_src Keybindings to move a window to the scratchpad and back from it. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+Shift+minus move scratchpad bindsym $mod+minus scratchpad show #+end_src Add resize keybindings. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes mode "resize" { bindsym $left resize shrink width 10px bindsym $down resize grow height 10px bindsym $up resize shrink height 10px bindsym $right resize grow width 10px bindsym Left resize shrink width 10px bindsym Down resize grow height 10px bindsym Up resize shrink height 10px bindsym Right resize grow width 10px bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+r mode "resize" #+end_src Add screenshot keybinding. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym $mod+Shift+s exec grim -g "$(slurp)" - | wl-copy #+end_src Add volume keybindings. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ bindsym XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- bindsym XF86AudioMute exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle #+end_src Add pause keybinding. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes bindsym XF86Eject exec mpc toggle #+end_src * Extras Load extra configuration. #+begin_src conf :tangle ~/.config/sway/config :mkdirp yes include /etc/sway/config.d/* #+end_src