Sway: Difference between revisions

From Alpine Linux
(fix formatting)
(custom dpi for qt applications)
Line 97: Line 97:
# for QT-based programs
# for QT-based programs
export QT_WAYLAND_FORCE_DPI="physical"
export QT_WAYLAND_FORCE_DPI="physical"
# or if still too small, use a custom DPI
export QT_WAYLAND_FORCE_DPI=192 # 2x scaling
export QT_QPA_PLATFORM="wayland-egl"
export QT_QPA_PLATFORM="wayland-egl"
</pre>
</pre>

Revision as of 17:30, 21 July 2022

Sway is a tiling Wayland compositor. It's a drop-in replacement for the i3 window manager.

Installation

eudev:

# apk add eudev
# setup-udev

Graphics drivers:

Add user to the input and video groups:

# adduser $USER input
# adduser $USER video


Install some TTF fonts:

# apk add ttf-dejavu

seatd daemon:

# apk add seatd
# rc-update add seatd
# rc-service seatd start
# adduser $USER seat

elogind, optional for suspend on lid close support.

Install sway:

# apk add sway sway-doc
# apk add                \ # Install optional dependencies:
    xwayland             \ # recommended for compatibility reasons
    foot                 \ # default terminal emulator
    wofi                 \ # wayland menu for application selection and screensharing
    swaylock swaylockd   \ # lockscreen tool
    swaybg               \ # wallpaper daemon
    swayidle               # idle management (DPMS) daemon

Configure XDG_RUNTIME_DIR. Add the following to shell init scripts, for the default ash shell it is ~/.profile:

if test -z "${XDG_RUNTIME_DIR}"; then
  export XDG_RUNTIME_DIR=/tmp/$(id -u)-runtime-dir
  if ! test -d "${XDG_RUNTIME_DIR}"; then
    mkdir "${XDG_RUNTIME_DIR}"
    chmod 0700 "${XDG_RUNTIME_DIR}"
  fi
fi

Launch Sway with dbus support:

dbus-launch --exit-with-session sway

Launching program under Wayland

For some programs, additional configuration is needed to launch them natively under Wayland and to support special features such as screen sharing.

To launch Firefox natively under Wayland and to enable support for screensharing, you need:

  • Install and configure PipeWire
  • Install xdg-desktop-portal and xdg-desktop-portal-wlr package
  • Install wofi for screen selection
  • Launch support programs on sway startup: Add exec pipewire and /usr/libexec/xdg-desktop-portal-wlr to ~/.config/sway/config
  • Export the following variables:
export MOZ_ENABLE_WAYLAND="1"
export XDG_CURRENT_DESKTOP=sway
export XDG_SESSION_TYPE=wayland

HiDPI

# for GTK-based programs such as firefox and emacs:
export GDK_DPI_SCALE=2

# for QT-based programs
export QT_WAYLAND_FORCE_DPI="physical"
# or if still too small, use a custom DPI
export QT_WAYLAND_FORCE_DPI=192 # 2x scaling
export QT_QPA_PLATFORM="wayland-egl"

Configuration

An example config is provided at /etc/sway/config. Copy it to ~/.config/sway/config and read through it to learn the default keybindings.


For additional information, start at man 5 sway and read the upstream wiki.

Make clipboard content persistent

By default the clipboard content does not persist after terminating the program: you copy some text from Firefox and then exit Firefox, the copied text is also lost.

Install clipman from test repo and add the following to sway config:

exec wl-paste --type text/plain --watch clipman store --histpath="~/.local/state/clipman-primary.json"
bindsym $mod+h exec clipman pick --tool wofi --histpath="~/.local/state/clipman-primary.json"