|
|
(12 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| Install and configure Sway
| | #redirect[[Sway]] |
| | |
| == Install Graphics Drivers ==
| |
| | |
| Graphics drivers:
| |
| | |
| * [[Intel Video]]
| |
| * [[Radeon Video]]
| |
| * [[Nvidia Video]]
| |
| | |
| == Add a normal user ==
| |
| | |
| Use <code>setup-user</code> to add a non-system normal user for running Sway.
| |
| | |
| == Install seatd ==
| |
| | |
| Install seatd, a minimal seat management daemon. This grants the required permissions to the user running sway:
| |
| | |
| apk add seatd
| |
| # add seatd to boot run-level, because greetd requires it to be running
| |
| rc-update add seatd boot
| |
| rc-service seatd start
| |
| adduser $USER seat
| |
| | |
| == Install elogind (optional) ==
| |
| | |
| elogind is used to enable suspend-to-RAM with swayidle:
| |
| | |
| apk add elogind
| |
| rc-update add elogind
| |
| rc-service elogind start
| |
| | |
| == Set up eudev ==
| |
| | |
| [[eudev]] is recommended and required for the greeter. Or else it will not be able to find any input device (libinput failure).
| |
| | |
| setup-devd udev
| |
| | |
| == Install greetd (optional) ==
| |
| | |
| greetd is used to set [[Wayland#XDG_RUNTIME_DIR|XDG_RUNTIME_DIR]] and properly configure seat:
| |
| | |
| apk add greetd greetd-gtkgreet cage greetd-openrc
| |
| rc-update add greetd
| |
| adduser greetd seat
| |
| | |
| In <code>/etc/greetd/config.toml</code>, set
| |
| | |
| <pre>
| |
| [default_session]
| |
| | |
| command = "cage -s -- gtkgreet"
| |
| </pre>
| |
| | |
| In <code>/etc/greetd/environments</code>, set
| |
| <pre>
| |
| # Launch Sway with a D-Bus server available, use:
| |
| dbus-run-session -- sway
| |
| </pre>
| |
| | |
| Running sway with DBus is needed for PipeWire and screen sharing.
| |
| | |
| == Install doas ==
| |
| Doas is used to grant permissions for suspend-to-RAM and brightness control with brightnessctl:
| |
| | |
| apk add doas brightnessctl
| |
| # optionally, allow $USER root access with password
| |
| adduser $USER wheel
| |
| | |
| In <code>/etc/doas.conf</code>, set
| |
| | |
| permit :wheel
| |
| permit nopass $USER as root cmd /bin/loginctl
| |
| permit nopass $USER as root cmd /usr/bin/brightnessctl
| |
| | |
| After setting the above, suspend-to-RAM can be triggered by running <code>/bin/loginctl suspend</code> (use full path to executable) and brightness can be adjusted by running <code>/usr/bin/brightnessctl set 100</code>.
| |
| | |
| == Install fonts ==
| |
| | |
| Install DejaVu fonts, which has good Unicode coverage:
| |
| | |
| apk add font-dejavu
| |
| | |
| == Install PipeWire, WirePlumber and XDG portals ==
| |
| | |
| For a reasonable desktop experience with support for audio and screensharing, install pipewire, wireplumber and xdg portals:
| |
| | |
| apk add pipewire pipewire-pulse pipewire-tools
| |
| apk add wireplumber
| |
| apk add xdg-desktop-portal xdg-desktop-portal-wlr
| |
| | |
| Later, we need to launch PipeWire with Sway and configure several environment variables.
| |
| | |
| == Install Sway ==
| |
| | |
| apk add sway \
| |
| xwayland \ # if you need xserver
| |
| foot \ # default terminal emulator. Modify $term in config for a different one.
| |
| bemenu \ # wayland native menu for choosing program and screensharing monitor
| |
| swaylock swaylockd \ # lockscreen tool
| |
| grim \ # screenshot tool
| |
| wl-clipboard \ # clipboard management
| |
| i3status \ # simple status bar
| |
| swayidle # idle management (DPMS) daemon
| |
| | |
| == Sway configuration ==
| |
| | |
| Copy default sway configuration to <code>~/.config</code>:
| |
| | |
| # as normal user
| |
| mkdir -p ~/.config/sway
| |
| cp /etc/sway/config ~/.config/sway/
| |
| | |
| Launch PipeWire with Sway, add the following to sway config:
| |
| | |
| exec /usr/libexec/pipewire-launcher
| |
| | |
| You also need to set DBus variables for the portal and screensharing features to work:
| |
| | |
| exec dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
| |
| | |
| Replace dmenu (depends on X server) with bemenu (Wayland native):
| |
| | |
| set $menu dmenu_path | bemenu | xargs swaymsg exec --
| |
| | |
| Set a mouse cursor, using GNOME Adwaita theme:
| |
| | |
| seat "*" xcursor_theme Adwaita 16
| |
| | |
| Set screen lock and suspend-to-RAM:
| |
| | |
| exec swayidle -w \
| |
| timeout 300 'swaylock --daemonize' \
| |
| timeout 330 'doas /bin/loginctl suspend' \
| |
| before-sleep 'swaylock --daemonize'
| |
| | |
| Do not lock the screen if program is running in full screen:
| |
| | |
| for_window [app_id="^.*"] inhibit_idle fullscreen
| |