Jump to content

XLibre

From ArchWiki

This article is being considered for redirection to List of applications/Other#Display servers.

Notes: Seems like once all the duplicated content and readme/upstream wiki copied information, there is nothing left that is not already in List of applications/Other#Display servers. (Discuss in Talk:XLibre)

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Too many issues to list. Page reads like an ad and duplicates multiple other ones. (Discuss in Talk:XLibre)

XLibre is a modern, community-maintained display server implementing the X Window System protocol, version 11 (X11). It is a fork of the X.Org Server, created on June 5, 2025, with the goal of cleaning up and modernising the codebase, shipping new features and features that had been developed upstream but not yet released, backporting security fixes, and keeping X11 well-maintained. XLibre is a configuration-compatible drop-in replacement for xorg-server.

Because XLibre shares its configuration and most of its behaviour with Xorg, this article focuses on the differences between the two. For general configuration, monitor settings, input devices, compositing and generic troubleshooting, see Xorg.

Installation

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Tip XLibre ships its own forked set of input/video drivers. The package names mirror those of Xorg with the prefix changed from xf86- to xlibre-, e.g. xf86-video-amdgpu becomes xlibre-video-amdgpu.

XLibre binary repository

Pre-compiled x86_64 binary packages are provided by the XLibre project as an unofficial user repository.


Install the xlibre-meta package from the XLibre repository.


The packages pulled by xlibre-meta replace their installed X.Org counterparts. If the current X session is interrupted while pacman is replacing packages, log in again on a virtual console and rerun the Install command.

After installation, install xorg-xdpyinfo if needed and check the vendor string:

$ xdpyinfo | grep 'vendor'
Note The remaining xorg-apps (e.g. xorg-xinput, xorg-xrandr, xorg-xdpyinfo), xorg-fonts and libraries such as libx11 are not forked by XLibre. The Xorg versions are used directly and remain useful complements to an XLibre installation.

AUR packages

The XLibre X server is also available in the AUR:

The XLibre server and driver packages install as part of the xlibre group, which also contains the forked input and video drivers and the xlibre-xserver-common files. The packages conflict with and provide their Xorg counterparts (xorg-server, xf86-video-modesetting, glamor-egl), so installing them replaces the equivalent Xorg packages.

Switching from X.Org

The xlibre-meta package replaces the corresponding X.Org server, input and video driver packages. If the graphical session is interrupted during installation, switch to a Linux console and complete the installation described in #Installation.


When building packages from the AUR, use matching XLibre server, input and video driver packages together. Loadable Xorg modules and XLibre modules use different ABI version numbers, so do not mix xorg-server with xlibre-* drivers or xlibre-xserverAUR with xf86-* drivers. See #Package name mapping for common package-name replacements.

Broken dependency on lightdm

This article or section is being considered for removal.

Reason: "The literal package name" argument is not accurate since xlibre-server provides xorg-server. Packaging issues and hacks to circument them also belong on the AUR page, at best, and not on the wiki (Discuss in Talk:XLibre)

Installing xlibre-xserverAUR may fail with:

removing xorg-server breaks dependency 'xorg-server' required by lightdm

Because lightdm depends on the literal package name xorg-server, the conflict cannot be resolved while lightdm is installed. Remove it first, then reinstall after the migration is complete:

pacman -Rdd lightdm
# ... complete the XLibre installation ...
pacman -S lightdm

Drivers

See Graphics processing unit#Installation to identify your hardware, and Xorg#Drivers for the generic driver-selection behaviour. XLibre ships its own forked set of Device Dependent X (DDX) and input drivers; always use the xlibre- packages to match the XLibre ABI. For input devices, XLibre defaults to the libinput driver (xlibre-input-libinputAUR)

The generic modesetting(4) DDX driver, which uses kernel mode setting and Glamor for 2D acceleration, is built into XLibre and works on modern hardware, so no separate video driver package is needed for most setups. When a specific DDX driver is wanted, install the corresponding xlibre-video-* package from the repository used for installation or the AUR. XLibre auto-searches for installed drivers, falling back to fbdev, then vesa, then the built-in modesetting.

The full list of forked drivers, including many for legacy hardware, is on the XLibre compatibility wiki.

Usage

The X server is normally started by a display manager or with startx(1). All common display managers work with XLibre (see #Compatibility). Generic X11 procedures documented for Xorg also apply to XLibre, see Xorg for details.

Rootless operation

XLibre upstream supports seat management via systemd-logind and seatd. The XLibre third-party binary packages for Arch currently have seatd support disabled, so the seatd-specific example below does not apply to those packages. For the usual rootless X server setup, see Xorg#Rootless Xorg.

If you build XLibre yourself with seatd support enabled and want to use seatd for rootless operation, create an ~/.xserverrc with:

~/.xserverrc
#!/bin/sh
exec X -keeptty "$@"

Make it executable:

$ chmod +x ~/.xserverrc

Nested X session

For nested X sessions, install xlibre-xserver-xnestAUR for Xnest support, or use Xephyr as described in Xorg#Nested X session.

Configuration

XLibre uses the same configuration mechanism as Xorg: an xorg.conf file and files with the .conf suffix in /etc/X11/xorg.conf.d/. See Xorg#Configuration, Xorg#Using .conf files and Xorg#Using xorg.conf for the full details of the file format, search paths, file ordering, Xorg :0 -configure, and available options. This section documents the options that behave differently in XLibre.

TearFree

Unlike the released X.Org Server, XLibre enables TearFree by default, so manual Option "TearFree" "on" configuration is unnecessary.

XLibre-specific features

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Not a standard section name. File under #Tips and Tricks (Discuss in Talk:XLibre)

TearFree and atomic modesetting

The factual accuracy of this article or section is disputed.

Reason: "developed for Xorg but never included in an Xorg release" is vague and contradicts "by default" before it. TearFree is certainly available in Xorg. (Discuss in Talk:XLibre)

XLibre enables the TearFree (vsync / page-flip) modesetting path by default, a feature that was developed for Xorg but never included in an Xorg release.

The factual accuracy of this article or section is disputed.

Reason: Is this feature specific to XLibre? (Discuss in Talk:XLibre)

XLibre can also use the Linux DRM/KMS atomic modesetting API. In the legacy modesetting API, userspace changes display state through several separate operations, such as setting modes, assigning framebuffers and moving planes. Atomic modesetting instead lets userspace submit one complete display-state update, which the kernel driver validates first and then applies as a single commit. This can avoid intermediate inconsistent states during display changes, and is the API used by modern DRM/KMS drivers. For background on KMS, see Kernel mode setting; for implementation details, see Linux kernel DRM/KMS documentation.

Enable it with:

/etc/X11/xorg.conf.d/xlibre.conf
Section "Device"
    Identifier "amd"
    Driver "modesetting"
    Option "Atomic" "on"
EndSection

Xnamespace extension

The Xnamespace extension (currently v1.0) isolates X clients from each other using namespaces, conceptually similar to Linux kernel namespaces. Each namespace has its own selections, and clients in one namespace cannot directly send messages to or access the resources of clients in another. The root namespace is unrestricted.

Namespaces are defined in a configuration file passed to the server at startup with the -namespace flag. Client-to-namespace assignment is based on the xauth authentication token, so token authentication must be enabled. An example configuration ships in the source tree at Xext/namespace/ns.conf.example.

Note Xnamespace is an advanced feature intended for hardened or multi-tenant setups. It is disabled by default (no namespace config is loaded unless -namespace is given).

Nvidia legacy driver support

XLibre re-added support for the proprietary NVIDIA driver legacy branches 340, 390, and 470 in addition to the already supported 570 and newer. These branches support older Nvidia hardware that the current driver line has dropped. See NVIDIA/Tips and tricks#Forked legacy driver versions. Because of the ABI mismatch described in #Ignoring the ABI (proprietary Nvidia driver), older X.Org-built Nvidia modules require IgnoreABI on XLibre releases before 25.0.0.16.

seatd support

In addition to systemd-logind, XLibre upstream can obtain device/seat privileges from seatd, which is useful on systems that run an alternative init (e.g. on systems where systemd is not installed). The XLibre third-party binary packages for Arch currently have seatd support disabled; see #Rootless operation.

Compatibility

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Not a standard section name. File under #Tips and Tricks, #Usage or #Installation. (Discuss in Talk:XLibre)

A core project goal is to remain backwards compatible with the X11 protocol API; existing X11 clients are expected to work unchanged.

Desktop environments, display managers and window managers

The major desktop environments, display managers and X11 window managers work with XLibre. A condensed overview:

Category Working with XLibre Notes
Desktop environments GNOME (up to 48), KDE Plasma (6.x), Xfce, MATE, Cinnamon, LXQt, LXDE, Budgie (up to 10.9), Trinity (TDE), Enlightenment, Moksha. GNOME 50+ and KDE Plasma 6.8+ are moving to Wayland-only; community forks (gnome-xorg, SonicDE) track the X11 path.
Display managers GDM, SDDM, LightDM, LXDM, XDM, SLiM, Entrance, ly GDM with GNOME 50+ will be Wayland-only.
Window managers i3, bspwm, Awesome, openbox, fluxbox, FVWM, IceWM, herbstluftwm, xmonad, dwm, Qtile, KWin, Mutter, Marco, Muffin, xfwm4, Moksha, compiz, twm, WindowMaker, and most others A maintained compatibility matrix is published on the XLibre wiki.

XWayland

XWayland (xorg-xwayland) is developed separately and is not part of the XLibre fork. It is unrelated to either Xorg or XLibre at the source level and is used as-is on Wayland sessions.

Troubleshooting

This section lists XLibre-specific issues. For general X server troubleshooting, see the matching Xorg sections in Xorg.

Log files

Like Xorg, XLibre writes logs to ~/.local/share/xorg/Xorg.n.log when run rootless, or to /var/log/ otherwise. Look for (EE) (error) and (WW) (warning) lines.

Nvidia driver flickering with compositors

Proprietary Nvidia driver 580.119.02 introduced flickering with compositors such as picom and Xfwm. This is a driver issue, not an XLibre bug. Use 580.105.08, 580.142, or 595.58.03 instead. See the driver matrix for tested combinations.

Module fails to load due to ABI mismatch

If a module (typically the proprietary Nvidia driver built for the Xorg ABI) is refused at startup, add the IgnoreABI option described in #Ignoring the ABI (proprietary Nvidia driver). On XLibre 25.0.0.16 and later this is handled automatically for the Nvidia driver.

nvidia_drv.so not found

The factual accuracy of this article or section is disputed.

Reason: What is "some builds"? Is this still an issue with versions ≥25.0.0.16? Untracked symlinks outside of pacman are a workaround that, at best, should be mentioned on the AUR page, not the wiki. (Discuss in Talk:XLibre)

If the proprietary driver's module is not found even with IgnoreABI set (reported on some source builds), the nvidia_drv.so may not be in XLibre's module search path. Symlink or copy it into the module directory, e.g. /usr/lib/xorg/modules/drivers/, or pass the correct -modulepath to the server.

XLibre fails to replace xorg-server (dependency)

The factual accuracy of this article or section is disputed.

Reason: This is not how depends work and ignores the existence of provides and (for local repositories) replaces. (Discuss in Talk:XLibre)

A package depending on the literal xorg-server name (e.g. lightdm) blocks the conflict resolution. See #Broken dependency on lightdm.

Module ABI

This article or section is a candidate for moving to Xlibre#Troubleshooting.

Notes: Not a configuration section, only for specific troubleshooting purposes. (Discuss in Talk:XLibre)

The XLibre server ABI is versioned and bumped on each major release. Out-of-tree modules built for a different ABI are refused by default. This check can be disabled globally for all modules with the following configuration:

/etc/X11/xorg.conf.d/xlibre.conf
Section "ServerFlags"
    Option "IgnoreABI" "1"
EndSection

See also