Sway on Laptop: Difference between revisions

From Alpine Linux
(Redirected page to Sway)
Tag: New redirect
 
(8 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 it must be running before greetd
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>
 
We need to run sway with <code>dbus-run-session</code>, this is needed for PipeWire and screensharing in Firefox and Chromium.
 
== 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
 
For complimentary software alternatives, see for example [https://wiki.gentoo.org/wiki/List_of_software_for_Wayland this list at Gentoo Wiki.]
 
== Sway configuration ==
 
Copy default sway configuration to <code>~/.config</code>:
 
# as normal user
mkdir -p ~/.config/sway
cp /etc/sway/config ~/.config/sway/
 
Read through it to learn the default keybindings.
Sway configuration is mostly backwards-compatible with that of [[I3wm|i3]] and if you are looking for a solution for a specific issue, you may also try checking if it hasn't been provided for i3WM.
 
For additional information, start at <code>man 5 sway</code> and read the [https://github.com/swaywm/sway/wiki upstream wiki].
 
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

Latest revision as of 23:51, 23 February 2024

Redirect to: