Table of Contents
Raspberry Pi: X11 or Wayland
With the operating system Raspbian GNU/Linux 12 (bookworm) it is possibile to choose between the traditional X11 graphical backend and the new Wayland. With X11 you can use only the Openbox window manager, while in Wayland you can choose Wayfire or the Labwc window manager.
The default is Wayland + Labwc for all the Raspberry Pi models, including the Pi 2.
Start the raspi-config and navigate the Advanced Options ⇒ Wayland to make your choice.
If you are using the default LightDM desktop manager, the settings are saved into /etc/lightdm/lightdm.conf. Here are the entries for Wayland Wayfire, Labwc and X11 respectively:
Wayland Wayfire
greeter-session=pi-greeter-wayfire user-session=LXDE-pi-wayfire autologin-session=LXDE-pi-wayfire fallback-test=/usr/bin/xfallback.sh fallback-session=LXDE-pi-x fallback-greeter=pi-greeter
Wayland Labwc
greeter-session=pi-greeter-labwc user-session=LXDE-pi-labwc autologin-session=LXDE-pi-labwc #fallback-test= #fallback-session= #fallback-greeter=
X11
greeter-session=pi-greeter user-session=LXDE-pi-x autologin-session=LXDE-pi-x #fallback-test= #fallback-session= #fallback-greeter=
How to tell if X11 or Wayland is running
From a terminal running in the graphical environment:
set | grep XDG_SESSION XDG_SESSION_CLASS=user XDG_SESSION_DESKTOP=LXDE-pi-x XDG_SESSION_ID=1 XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0 XDG_SESSION_TYPE=x11
the output for a Wayland Labwc session:
set | grep XDG_SESSION XDG_SESSION_CLASS=user XDG_SESSION_DESKTOP=LXDE-pi-labwc XDG_SESSION_ID=1 XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0 XDG_SESSION_TYPE=wayland
You can also check the running processes:
ps uax | grep labwc pi 786 3.3 7.6 287268 72252 ? Ss 11:00 0:11 /usr/bin/labwc -m
Wayland Wayfire not starting on the Raspberry Pi 2
On the Raspberry Pi 2 the Wayland Wayfire does not start. Fortunately enough the raspi-config
added into the /etc/lightdm/lightdm.conf configuration file the fallback-session option, which launches the legacy X11.
I discovered it because I installed the hide-cursor Wayfire plugin, but the plugin did not work. Actually the entire Wayfire was not running!
As per Raspbian GNU/Linux 12 (bookworm), Raspberry Pi OS Switches to Wayland on All Pi Models, and Raspberry Pi OS’s Wayland Transition Completed With Switch To Labwc.
Wayfire is more resource-intensive than Labwc, so its use is discouraged and it will no start on the Raspberry Pi 2. Infact the /usr/bin/xfallback.sh script will return zero if run on the Pi 2.
Starting the Wayland backend manually
First of all you have to stop the running graphical environment. Stopping the LigthDM desktop manager will close the graphical screen on VT#7:
sudo systemctl stop lightdm.service
Then, as the unprivileged user, you can run the commad
wayfire-pi
or
labwc-pi
This can be useful to capture stdout and stderr messages from the window manager.