XLibre Xserver
Find a file
stefan11111 3109a95e56 glx: vndcmds: Update a comment
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-10-24 12:47:15 +02:00
.github CI: Build Xfbdev on linux CI, and only on linux CI 2025-10-21 14:13:21 +02:00
.gitlab-ci os: use internal xtrans instead of external library 2025-07-18 22:29:38 +02:00
composite treewide: macros lambda-esque screen iteration 2025-10-01 11:40:34 +02:00
config config: fix inttype mismatches on device major/minor numbers 2025-09-05 20:31:59 +02:00
dbe dix: replace XACE_SCREEN_ACCESS by direct callback 2025-10-22 13:53:25 +02:00
dix dix: ProcPolyText(): drop unused variable 2025-10-23 13:11:55 +02:00
doc treewide: drop ScreenInfoPtr parameter from InitOutput() 2025-09-12 19:49:23 +02:00
dri3 treewide: macros lambda-esque screen iteration 2025-10-01 11:40:34 +02:00
exa treewide: replace PictFormatShort by pixman_format_code_t 2025-09-25 14:28:06 +02:00
fb treewide: drop unnecessary pixmap field initialization 2025-09-01 13:31:52 +02:00
glamor treewide: replace PictFormatShort by pixman_format_code_t 2025-09-25 14:28:06 +02:00
glx glx: vndcmds: Update a comment 2025-10-24 12:47:15 +02:00
hw modesetting: add "CursorSize" option 2025-10-21 16:12:46 +02:00
include dix: add some bit of documentation to privates subsystem 2025-10-21 20:36:13 +02:00
man Fix minor punctuation error in manual page 2025-07-23 16:07:52 +02:00
mi treewide: macros lambda-esque screen iteration 2025-10-01 11:40:34 +02:00
miext treewide: macros lambda-esque screen iteration 2025-10-01 11:40:34 +02:00
os win32: move definition of sigset_t to os/osdep.h 2025-09-29 19:13:49 +02:00
present treewide: macros lambda-esque screen iteration 2025-10-01 11:40:34 +02:00
pseudoramiX pseudoramiX: inline SProc*() 2025-09-25 09:37:15 +02:00
randr dix: unexport ConnectionInfo field 2025-10-01 11:42:50 +02:00
record record: inline SProc*() 2025-09-25 09:37:36 +02:00
render render: consolidate byte-swapping in ProcRenderSetPictureFilter() 2025-10-23 13:10:59 +02:00
test Xi: inline SProcXIQueryDevice() 2025-09-29 11:19:10 +02:00
Xext dix: replace XACE_SCREEN_ACCESS by direct callback 2025-10-22 13:53:25 +02:00
xfixes dix: replace XACE_SCREEN_ACCESS by direct callback 2025-10-22 13:53:25 +02:00
Xi Xi: inline SProcXIBarrierReleasePointer() 2025-10-23 13:11:22 +02:00
xkb xkb: inline SProcXkbSetCompatMap() 2025-10-23 13:10:35 +02:00
.appveyor.yml os: use internal xtrans instead of external library 2025-07-18 22:29:38 +02:00
.dir-locals.el .dir-locals.el: Add missing final newline 2019-10-01 17:05:28 +00:00
.git-blame-ignore-revs Ignore the coding style change commit during git blame 2024-12-06 09:55:53 +10:00
.gitignore Clean up the .gitignore file 2024-01-12 00:50:24 +00:00
.gitlab-ci.yml os: use internal xtrans instead of external library 2025-07-18 22:29:38 +02:00
.mailmap Update mailmap for Peter Harris 2025-04-15 13:49:13 -04:00
.travis.yml travis: Add OSX meson build to matrix 2019-05-02 15:42:58 +00:00
CoC.md it's time to add a CoC (code of conduct) 2025-06-12 17:21:47 +02:00
CODE_OF_CONDUCT.md it's time to add a CoC (code of conduct) 2025-06-12 17:21:47 +02:00
CONTRIBUTING.md fix minor spelling mistake in contributing guidelines 2025-09-05 15:05:37 +02:00
COPYING COPYING: add myself 2025-06-12 17:21:48 +02:00
HISTORY.md HISTORY.md: add brief overview of the XLibre fork 2025-07-25 08:06:47 -04:00
meson.build os: Fix builds with -Dxdmcp=false 2025-09-22 12:00:14 +02:00
meson_options.txt kdrive: bring back Xfbdev 2025-09-08 17:35:36 +02:00
NEWS NEWS: updated to version 25.0.0.9 2025-08-21 11:30:56 +02:00
README.md README.md: updated links to new packaging repository pt2 2025-10-17 09:46:20 -04:00
xorg-server.m4 xorg-server.m4: just all cflags instead of just sdkdir 2018-09-20 20:12:24 +01:00
xorg-server.pc.in xorg-server.pc.in: fix source URL 2025-06-23 16:55:43 +02:00
xserver.ent.in

XLibre Xserver

XLibre running on FreeBSD
XLibre running on FreeBSD. See more liberated screens here.

XLibre is a display server implementation of the X Window System Protocol Version 11 (Wikipedia), in short X11. It has been forked from the X.Org Server (Wikipedia). For the reasons for the fork, please see the HISTORY.md.

Our mission

The XLibre contributors strive to clean up and strengthen the existing code base while maintaining backward compatibility to make X11 a viable choice for the future. Another goal is to actively enhance the functionality of the Xserver and its drivers. We also take care of the improvements to the X.Org Server that have been unreleased for several years or were made to Xwayland only. Our decision-making is based on merit and our active community keen to bring X forward.

Our achievements

Since the fork on June 5, 2025, our by now more than 30 contributors have, e.g., released numerous code cleanups, the Xnamespace extension for separating X clients, and backported the June 2025 X.Org CVE fixes. Together we integrated TearFree by default and allowed enabling atomic modesetting. Xnest was ported to xcb, per-ABI driver directories were introduced, and XQuartz has been added to our build jobs. We have fought through all the issues that have been thrown at us, reached the first stage of the associated workflow, and established our support for packaging XLibre by volunteers. We have also made a first release announcement and created the NEWS.

A side note: If your XLibre Xserver is already set up and running, you may want to skip to our roadmap.

XLibre running accelerated on RK3588
XLibre running accelerated on RK3588. See more liberated screens here.

Switching to XLibre

The easiest way to install and run XLibre is to use your distribution's provided packages. Please see the Are We XLibre Yet? - (X11Libre/xserver Wiki) page for a list of the available options. If there is no option, then go on with building and installing XLibre from source.

Building XLibre

After cloning the Xserver repository or unpacking the sources and installing the dependencies, change into the source directory and run the Meson build tool:

cd "<source dir of xserver>"
meson setup <prefix> build <meson_options>
ninja -C build install

You may specify the install <prefix> with, for example, --prefix="$(pwd)/image" and add build time <meson_options> like so: -Dxnest=false. You may also want to build and install some graphics and input drivers. Please refer to the Building XLibre (X11Libre/xserver Wiki) page for more details.

Configuring XLibre

To enable loading of the proprietary Nvidia driver, please add the following to your X configuration, e.g., /etc/X11/xorg.conf:

Section "ServerFlags"
  Option "IgnoreABI" "1"
EndSection

Please see the Compatibility of XLibre (X11Libre/xserver Wiki) page for more details on the Nvidia driver and compatibility in general.

Until XLibre releases its own, you can find a detailed description of the configuration on the Configuration - Xorg (ArchWiki) page. If you have built and installed XLibre yourself, then change into the <prefix> directory with cd <prefix> and create a directory etc/X11 with a file xorg.conf and adjust it accordingly.

Running XLibre

If you installed XLibre using your distribution's provided packages, then the Xserver is usually started by init (Wikipedia) on system start. On other systems it should be possible to manually start XLibre with user permissions by invoking startx. Please refer to man startx for how to use it.

If you have built and installed XLibre yourself, then you may want to shutdown other Xservers, change into the <prefix> directory, and create a simple testx.sh file with the following contents:

#!/bin/sh
./bin/X :1 vt8 &
_pid=$!
sleep 10 && kill $_pid

You can adjust the :1 vt8 and other options in the testx.sh file as detailed in man Xorg. Make the testx.sh executable and run it:

chmod 0770 testx.sh
./testx.sh

This should give you 10 glorious seconds of a black and beautiful and empty screen. Afterwards the Xserver complains about being killed, but there should be no other critical errors for a "test passed." For more details, please see Building XLibre (X11Libre/xserver Wiki).

Our roadmap

Roughly speaking, we will continue to clean up and modernize the codebase, enhance our continuous integration, add static code analysis, and improve manual and automated testing. Therefore, we will consolidate our build infrastructure and release process and also add more platforms to the test cycle. We will also further look into separating X clients by the Xnamespace extension and providing practical examples of how to use it.

Some of the many ideas and feature requests we received will be refined and prepared for implementation, and we will go on to integrate relevant but unreleased Xorg and Xwayland features as well. Our documentation will see improvements on how to build, configure, and switch to XLibre. A revamp of our website, the creation of a logo, and more rebranding to XLibre are also on the map. End of roughly speaking.

One of the very next steps is to concretize our roadmap by using the GitHub Projects feature to arrange and prioritize bug reports, feature requests, and other issues. This will give anybody a clear picture of what is next. All in the open so you can follow along and, more so, participate.

I want to help!

That's great; there's enough to do for everyone. You may consider one of the many ideas and feature requests out there, like adding static code analysis/coverage, creating a logo for XLibre or becoming an XLibre Test Driver.

There is also a good chance to enhance the documentation of Xnamespace and add more details to the Building XLibre and Graphics devices & drivers wiki pages. Or to update the desktop environments and display managers lists as things work for you.

To wrap things up, please have a look at the XLibre On Other Distributions discussion. There is already some nice work going on, and also some more could be done, like creating XLibre packages in OpenSuse Build Service (OBS). Or create a platform cheat sheet in general.

That's not enough? Then have a glance at the good first and help wanted issues. There are more to come, especially for code cleanups. If you want to work on anything, just let us know. If you have any questions, just ask. We thank you!

You're welcome!

XLibre running on NixOS
XLibre running on NixOS. See more liberated screens here.

This is an independent project, not at all affiliated with BigTech or any of their subsidiaries or tax evasion tools, nor any political activist groups, state actors, etc. It's explicitly free of any "DEI" or similar discriminatory policies. Anybody who's treating others nicely is welcome.

It doesn't matter which country you're coming from, your political views, your race, your sex, your age, your food menu, whether you wear boots or heels, whether you're furry or fairy, Conan or McKay, a comic character, a small furry creature from Alpha Centauri, or just a boring average person. Anybody who's interested in bringing X forward is welcome.

Together we'll make X great again!

Contact

XLibre Discussions at GitHub | XLibre mailing list at FreeLists | @x11dev channel at Telegram | #xlibre room at Matrix | XLibre security contact at GitHub

Interview: Meet Enrico Weigelt, the maintainer of the new XLibre fork - Felipe Contreras