Wayland: Difference between revisions
Bezzumnbiu (talk | contribs) m (Fix mistake) |
(1. →XDG_RUNTIME_DIR: XDG specifications link added; also a Note that XDG_RUNTIME_DIR may be found as "/tmp/$(id -u)-runtime-dir" or similar, but "/run/user/$(id -u)" keeps more in line with other facilities, as described. 2. →Creating and exporting XDG_RUNTIME_DIR manually: - modified XDG_RUNTIME_DIR path accordingly. See discussion.) |
||
| Line 11: | Line 11: | ||
== XDG_RUNTIME_DIR == | == XDG_RUNTIME_DIR == | ||
As per the protocol | As per the protocol specifications, Wayland compositors require the <code>XDG_RUNTIME_DIR</code> variable to be set. | ||
[https://specifications.freedesktop.org/basedir/latest/#variables XDG specifications] are set by the [https://specifications.freedesktop.org/ Freedesktop project]. | |||
{{Note| Although paths such as {{Path|/tmp/$(id -u)-runtime-dir}} and similar are sometimes encountered for {{ic|XDG_RUNTIME_DIR}}, at all times they should follow '''XDG specifications'''. It would be set as {{Path|/run/user/$(id -u)}} by '''elogind'''; and as {{Path|/run/user-$UID}} and should be mounted as {{ic|tmpfs}} by [https://git.sr.ht/~whynothugo/mkrundir mkrundir]. </br>[[#With_pam_rundir|pam_rundir]] below similarly engages {{Path|/run/user}}, as per [https://man.sr.ht/~kennylevinsen/seatd/#using-codepam_rundircode upstream]}} | |||
=== With elogind === | === With elogind === | ||
| Line 38: | Line 41: | ||
{{Cat|~/.profile|<nowiki>if [ -z "$XDG_RUNTIME_DIR" ]; then | {{Cat|~/.profile|<nowiki>if [ -z "$XDG_RUNTIME_DIR" ]; then | ||
XDG_RUNTIME_DIR="/ | XDG_RUNTIME_DIR="/run/user/$(id -u)" | ||
mkdir -pm 0700 "$XDG_RUNTIME_DIR" | mkdir -pm 0700 "$XDG_RUNTIME_DIR" | ||
Revision as of 06:17, 4 December 2025
Wayland is a new display protocol that aims to replace X11. Wayland requires a seat manager to work.
The setup-wayland-base script installs and enables elogind as seat manager besides enabling community repository and eudev.
Compositors
Display servers that implement the Wayland display server protocol are also called Wayland compositors because they additionally perform the task of a compositing window manager.
Multiple compositor implementations exist, including Sway, Mutter (GNOME's compositor) and Kwin (KDE's compositor). The following compositors are available in Alpine Linux.
XDG_RUNTIME_DIR
As per the protocol specifications, Wayland compositors require the XDG_RUNTIME_DIR variable to be set.
XDG specifications are set by the Freedesktop project.
XDG_RUNTIME_DIR, at all times they should follow XDG specifications. It would be set as /run/user/$(id -u) by elogind; and as /run/user-$UID and should be mounted as tmpfs by mkrundir. pam_rundir below similarly engages /run/user, as per upstream
With elogind
When using elogind as a seat manager, it exports XDG_RUNTIME_DIR and other XDG environment variables automatically for each session. No further configuration is required.
With pam_rundir
pam_rundir is a PAM module that provides the runtime directory variable. Installing the package pam-rundir takes care of dependencies and no further configuration is required.
XDG_RUNTIME_DIR variable MUST be initialised before the Wayland compositor, and also before the D-Bus session instance is started in your startup script/file for both the methods listed below.With mkrundir
mkrundir is an executable that can be used to initialise the runtime directory explicitly by each user. To use mkrundir, install the package mkrundir available in testing repository. In your shell init script (e.g.: ~/.profile include an entry as follows at the top of the file
Contents of ~/.profile
As per mkrundir website, this might have issues inside containers, due to privilege escalation.
Creating and exporting XDG_RUNTIME_DIR manually
Generally, care should be taken when configuring the XDG_* variables manually as this configuration may have errors or conflict with other utilities that do this automatically. Use this only on a system that's not using elogind and other solutions outlined above cannot handle this.
The XDG_RUNTIME_DIR can be initialised manually by adding below snippet to shell init scripts (e.g.: ~/.profile):
Contents of ~/.profile
Troubleshooting
error: XDG_RUNTIME_DIR is invalid or not set in the environment
The above error message appears when starting services/applications that require the environment variable XDG_RUNTIME_DIR to be set. Fix it using one of the above methods before proceeding.