This is an old revision of the document!
Table of Contents
Using X11 Environments in Xwayland
Being able to read xorg.conf is not one my goals, nor achieving a bug-for-bug compatibility with Xorg - Xwayland with !901 (merged) allows to run a full X11 desktop, even the most legacy ones (I demoed it internally here using CDE from an XDMCP remote connection for the fun 😉).1)
This is a how-to guide for running an X11 window manager or desktop environment in Xwayland on Slackware 15.0 and beyond.
At the time of writing (December 2023), this is a purely academic question for most – if not all – users. As both KDE Plasma and Xfce continue to move in the direction of Wayland, however, it is not impossible that full X servers become unavailable on Slackware in future years. This poses a dilemma from both a user and a software preservation perspective. Xwayland provides a way forward, if an imperfect one. The process of running an Xorg environment from inside a “rootfull” Xwayland session is straightforward:
- Choosing a Wayland compositor
- Configuration
- Running the Wayland compositor
- Starting the X11 environment on Xwayland
Choosing a Wayland compositor
The following considerations are important in choosing a Wayland compositor:
- Lightweight
- Stacking window management
- Able to suppress client-side decorations
This how-to will use labwc as an example. labwc is a lightweight, wlroots-based compositor with OpenBox-style configuration.
General Configuration
General configuration requirements are limited. It is only necessary to ensure that Xwayland-capable programs open under Xwayland rather than Wayland, and that startx does something productive.
Forcing Xwayland
Any program opening in Wayland mode will be managed by the Wayland compositor instead of the Xorg environment. This can result in the appearance of poorly-behaved windows with incorrect decoration and the non-appearance of system tray items. Place the following lines in /etc/environment
2) to control gtk and qt applications :
GDK_BACKEND=x11 QT_QPA_PLATFORM=xcb
For X keyboard maps other than US, it may also be necessary to specify a keymap here:
XKB_DEFAULT_LAYOUT=jp # e.g.
startx
Instructions for starting an X session should be contained in $HOME/.xinitrc
because startx will launch Xwayland. xwmconfig can set up an xinitrc file for the preferred Xorg environment if need be.
Configuring labwc
For Slackware 15.0
Create an autostart file at $HOME/.config/labwc/autostart
to launch an Xwayland server with startx:
#!/bin/sh DISPLAY=:1 startx -- /usr/bin/Xwayland
This variant closes labwc after quitting the Xorg environment to return cleanly to tty or the display manager:
#!/bin/sh DISPLAY=:1 startx -- /usr/bin/Xwayland & wmpid=$! wait $wmpid pkill -x labwc
To stop labwc from decorating the Xwayland server window, write the following to a file at $HOME/.config/labwc/rc.xml
:
<labwc_config> <core> <decoration>client</decoration> </core> </labwc_config>
If auto-starting xset tends to fail, try adding a few seconds of sleep before startx.
For Other Versions
These changes reflect post-15.0 Xwayland development:
- Rootfull Xwayland windows are no longer decorated, so
rc.xml
is unneeded. - The initial geometry of the Xwayland server must be specified. To start the server, use:
DISPLAY=:1 startx – /usr/bin/Xwayland -fullscreen -geometry 1920×1200
Ideally, the geometry
option will match the dimensions of the monitor. xrandr can change the resolution afterwards.
Running
The Wayland compositor should be known to the display manager for Run Level 4 users, assuming that its package includes a desktop file. Run Level 3 users can run the Wayland compositor directly from the command line:
$ /usr/bin/labwc
Once the autostart script has started the Xorg environment, the following commands can verify that the process worked:
$ pgrep Xorg $ pgrep Xwayland
If there is at least one Xwayland process (may vary by Wayland compositor) and no Xorg process, feel free to take a screenshot (optional) and tell your friends (not advised).
Caveats
The following caveats bear mentioning:
- Mouse pointer warping does not work. EdgeScroll in Fvwm is an example of an impacted feature.
- xrandr is non-functional in Xwayland versions before 22.1.3, and an extra program such as wlr-randr would be needed for screen management. Effectively, this restricts the choice of compositor to those based on wlroots.
- GPU memory usage is slightly higher relative to running an ordinary xserver.
- Wayland-only programs (e.g. waydroid) and any other program that runs in Wayland mode will be managed by the Wayland compositor rather than the Xorg environment.
- Neither xinput nor synclient will work to turn off touchpads, for example.
- If an input device does not work in the chosen Wayland compositor, running an Xwayland server will not cause it to start working.
- xbacklight does not work; echoing values to
/sys/class/backlight/*/brightness
may be a workaround, depending on the system. - If audio sharing fails, try using pipewire with wireplumber3).
The above list is non-exhaustive.
Sources
- Xwayland(1)
- labwc(1)