Wayland: Difference between revisions

From Alpine Linux
(Add references to some compositors.)
(Extend XDG_RUNTIME_DIR; mention mkrundir)
Line 5: Line 5:
== XDG_RUNTIME_DIR ==
== XDG_RUNTIME_DIR ==


As per the protocol spec, Wayland compositors require the <code>XDG_RUNTIME_DIR</code> variable to be set. There are a few ways to configure this variable:
As per the protocol spec, Wayland compositors require the <code>XDG_RUNTIME_DIR</code> variable to be set. There are a few ways to configure create a temporary runtime directory and export this variable:


* A login manager such as [[elogind]] can configure this and other XDG environment variables automatically.
* [[elogind]] can do this and also export other XDG environment variables automatically for each session.
* {{pkg|pam-rundir}} can enable this for logins. To use this [[PAM]] is required.
* {{pkg|pam-rundir}} can handle this for logins. To use this [[PAM]] is required.
* Setting it up manually
* [https://git.sr.ht/~whynothugo/mkrundir mkrundir] is a low level tool that can be used to initialise the runtime directory explicitly by each user.
* Setting it up manually ([[#Configuring_XDG_RUNTIME_DIR_manually|see below]]).
 
Note that this variable MUST be initialised before the Wayland compositor, and also before the D-Bus session instance is started.


=== Configuring XDG_RUNTIME_DIR manually ===
=== Configuring XDG_RUNTIME_DIR manually ===
Line 15: Line 18:
Generally, care should be taken when configuring the <code>XDG_*</code> variables manually as this configuration may have errors or conflict with other utilities that do this automatically.
Generally, care should be taken when configuring the <code>XDG_*</code> variables manually as this configuration may have errors or conflict with other utilities that do this automatically.


On a system that's not using elogind nor any pam module that handles this, it's often necessary to set up <code>XDG_RUNTIME_DIR</code> manually. This can be done by adding a snippet like this one to shell init scripts (e.g.: {{Path|~/.profile}}):
On a system that's not using elogind nor any pam module that handles this, the <code>XDG_RUNTIME_DIR</code> can be initialised manually. The easiest approach is by adding a snippet like this one to shell init scripts (e.g.: {{Path|~/.profile}}):


{{Cat|~/.profile|<nowiki>if test -z "${XDG_RUNTIME_DIR}"; then
{{Cat|~/.profile|<nowiki>if test -z "${XDG_RUNTIME_DIR}"; then

Revision as of 22:00, 6 November 2023

Wayland is a new display protocol that aims to replace X11.

Multiple compositor implementations exist, including Sway, Mutter (GNOME's compositor) and Kwin (KDE's compositor). A more exhaustive list is available in the ArchWiki.

XDG_RUNTIME_DIR

As per the protocol spec, Wayland compositors require the XDG_RUNTIME_DIR variable to be set. There are a few ways to configure create a temporary runtime directory and export this variable:

  • elogind can do this and also export other XDG environment variables automatically for each session.
  • pam-rundir can handle this for logins. To use this PAM is required.
  • mkrundir is a low level tool that can be used to initialise the runtime directory explicitly by each user.
  • Setting it up manually (see below).

Note that this variable MUST be initialised before the Wayland compositor, and also before the D-Bus session instance is started.

Configuring 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.

On a system that's not using elogind nor any pam module that handles this, the XDG_RUNTIME_DIR can be initialised manually. The easiest approach is by adding a snippet like this one to shell init scripts (e.g.: ~/.profile):

Contents of ~/.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

See also