diff --git a/README.md b/README.md index 04d64fd23b..ecd3b9f001 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,123 @@ -XLibre Xserver -=============== +# XLibre Xserver -Xlibre is a fork of the [Xorg Xserver](https://gitlab.freedesktop.org/xorg/xserver) -with lots of code cleanups and enhanced functionality. +

+

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

-This fork was necessary since toxic elements within Xorg projects, moles -from BigTech, are boycotting any substantial work on Xorg, in order to -destroy the project, to eliminate competition of their own products. -Classic "embrace, extend, extinguish" tactics. +XLibre is a display server implementation of the [X Window System Protocol Version 11 (Wikipedia)](https://en.wikipedia.org/wiki/X_Window_System_core_protocol), in short X11. It has been forked from the [X.Org Server (Wikipedia)](https://en.wikipedia.org/wiki/X.Org_Server). For the reasons of the fork please see the [HISTORY.md](HISTORY.md). -Right after journalists first began covering the planned fork Xlibre, -on June 6th 2025, Redhat employees started a purge on the Xlibre founder's -GitLab account on freedesktop.org: deleted the git repo, tickets, merge -requests, etc, and so fired the shot that the whole world heard. -This is an independent project, not at all affiliated with BigTech or any -of their subsidiaries or tax evasion tools, nor any political activists -groups, state actors, etc. It's explicitly free of any "DEI" or similar -discriminatory policies. Anybody who's treating others nicely is welcomed. +## Our mission -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, 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. +The XLibre contributors strive to cleanup 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 and the [Xnamespace extension](https://github.com/X11Libre/xserver/blob/master/doc/Xnamespace.md) for separating clients into namespaces, integrated [TearFree by default](https://github.com/X11Libre/xserver/commit/0dacee6c5149b63a563e9bed63502da2e9f1ac1f) and [allowed enabling atomic modesetting](https://github.com/X11Libre/xserver/commit/461411c798c263f70daa96f7136614dfefda6adc). Xnest was ported to xcb, [per-ABI driver directories](https://github.com/X11Libre/xserver/commit/49c6431695f817845d921f74bf24e9e30ddd89a5) were introduced and [XQuartz has been added to our build jobs](https://github.com/X11Libre/xserver/commit/f40afc89832d1faf19beb4d394956208a98462cc). We have fought through [all](https://github.com/X11Libre/xserver/pulls?q=is%3Apr) [the](https://github.com/X11Libre/misc/issues?q=is%3Aissue) [issues](https://github.com/X11Libre/xserver/issues?q=is%3Aissue) that have been thrown at us, reached the first stage of the associated workflow and established our support for [packaging XLibre by volunteers](https://github.com/orgs/X11Libre/discussions/categories/xlibre-on-other-distributions). We have also made a [first release announcement](https://www.freelists.org/post/xlibre/Xlibre-250-summer-solstice-release) and created the [NEWS](NEWS). + +A side note: If your XLibre Xserver is already set up and running you may want to skip to [our roadmap](#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)](https://github.com/X11Libre/xserver/wiki/Are-We-XLibre-Yet%3F) 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](https://github.com/X11Libre/xserver.git) or unpacking the sources and installing the dependencies, change into the source directory and run the [Meson](https://mesonbuild.com) build tool: + +```shell +cd "" +meson setup build +ninja -C build install +``` + +You may specify the install `` with for example `--prefix="$(pwd)/image"` and add build time [``](https://github.com/X11Libre/xserver/blob/master/meson_options.txt) 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)](https://github.com/X11Libre/xserver/wiki/Building-XLibre) 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)](https://github.com/X11Libre/xserver/wiki/Compatibility-of-XLibre) page for [more details on the Nvidia driver](https://github.com/X11Libre/xserver/wiki/Compatibility-of-XLibre#nvidia-proprietary-driver) and compatibility in general. + +Until XLibre releases its own, you can find a detailed description of the configuration on the [Configuration - Xorg (ArchWiki)](https://wiki.archlinux.org/title/Xorg#Configuration) page. If you have built and installed XLibre yourself then change into the `` directory with `cd ` 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)](https://en.wikipedia.org/wiki/Init) 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`](https://linux.die.net/man/1/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 `` directory and create a simple `testx.sh` file with the following contents: + +```shell +#!/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`](https://linux.die.net/man/1/xorg). Make the `testx.sh` executable and run it: + +```shell +chmod 0770 testx.sh +./testx.sh +``` + +This should give you glorious 10 seconds of a black and beautyful 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)](https://github.com/X11Libre/xserver/wiki/Building-XLibre). + + +## Our roadmap + +Roughly speaking: We will continue to cleanup and modernize the codebase, enhance our continous 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](https://github.com/orgs/X11Libre/discussions/categories/1-new-ideas) of the [many](https://github.com/orgs/X11Libre/discussions/categories/2-rfcs-of-the-core-team) [ideas](https://github.com/orgs/X11Libre/discussions/categories/3-ideas-soon-to-be-addressed) and [feature requests](https://github.com/X11Libre/xserver/issues?q=is%3Aissue%20state%3Aopen%20label%3Aenhancement) out there like [adding static code analysis/coverage](https://github.com/orgs/X11Libre/discussions/239) or [creating a logo for XLibre](https://github.com/X11Libre/xserver/issues/112) or becoming a [XLibre Test Driver](https://github.com/orgs/X11Libre/discussions/240). + +There is also a good chance to [enhance the documentation of Xnamespace](https://github.com/X11Libre/xserver/issues/458) and add more details to the [Building XLibre](https://github.com/X11Libre/xserver/wiki/Building-XLibre) and [Graphics devices & drivers](https://github.com/X11Libre/xserver/wiki/Graphics-devices-&-drivers) wiki pages. Or to update the [desktop environments](https://github.com/X11Libre/xserver/wiki/Are-We-XLibre-Yet%3F#desktop-environments) and [display managers](https://github.com/X11Libre/xserver/wiki/Are-We-XLibre-Yet%3F#display-managers) lists as things work for you. + +To wrap things up, please have a look at the [Xlibre On Other Distributions discussion](https://github.com/orgs/X11Libre/discussions/categories/xlibre-on-other-distributions). There is already some nice work going on and also some more could be done like [creating XLibre packages in OpenSuse Build Service (OBS)](https://github.com/orgs/X11Libre/discussions/235), a [PPA for Ubuntu/Linux Mint](https://github.com/orgs/X11Libre/discussions/118) or [RPM packaging support](https://github.com/orgs/X11Libre/discussions/126). Or create a [Platform cheatsheet](https://github.com/orgs/X11Libre/discussions/241) in general. + +That's not enough? Then have a glance on the [good first](https://github.com/X11Libre/xserver/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22) and [help-wanted](https://github.com/X11Libre/xserver/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%22) 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 activists groups, state actors, etc. It's explicitly free of any "DEI" or similar discriminatory policies. Anybody who's treating others nicely is welcomed. + +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, 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! -Upgrade notice --------------- -* Module ABIs have changed - drivers MUST be recompiled against this Xserver - version, otherwise the Xserver can crash or fail to start up correctly. +## Contact -* If your console is locked up (no input possible, not even VT switch), then - most likely the input driver couldn't be loaded due to a version mismatch. - When unsure, it's best to be prepared to ssh into your machine from another one - or set a timer that's calling `chvt 1` after certain time, so you don't - need a cold reboot. - Or, make sure that you have magic `SysRq` key enabled (`Alt+PrtSc`) - via sysctl (`kernel.sysrq=1`), then press following combination depending on keyboard - layout to make kernel regain control over keyboard to make VT switching work: - - QWERTY/AZERTY keyboard layout: `SysRq + R` - - Dvorak/Colemak keyboard layout: `SysRq + P` +[XLibre Discussions at Github](https://github.com/orgs/X11Libre/discussions) | [XLibre mailing list at FreeLists](https://www.freelists.org/list/xlibre) | [@x11dev channel at Telegram](https://t.me/x11dev) | [#xlibre room at Matrix](https://matrix.to/#/#xlibre:matrix.org) | [XLibre security contact at Github](https://github.com/X11Libre/xserver/security/policy) -* Proprietary Nvidia drivers might break: they still haven't managed to do - even simple cleanups to catch up with Xorg master for about a year. - All attempts to get into direct mail contact have failed. We're trying to - work around this, but cannot give any guarantees. But you can make it work - by adding `Option "IgnoreABI" "1"` line to `ServerFlags` section in Xorg config. +[Interview: Meet Enrico Weigelt, the maintainer of the new XLibre fork - Felipe Contreras](https://felipec.wordpress.com/2025/06/11/enrico-weigelt/) -* Most Xorg drivers should run as-is (once recompiled!), with some exceptions. - See `.gitlab-ci.yml` for the versions/branches built along with Xlibre. - - -Driver repositories -------------------- - -Since Redhat had deleted and banned all X11Libre repositories from freedesktop.org, -the driver repositories are now moved to GitHub: - -| Driver | Git repository | Release tag | -| --- | --- | --- | -| xf86-input-elographics: | https://github.com/X11Libre/xf86-input-elographics | xlibre-xf86-input-elographics-1.4.4.1 | -| xf86-input-evdev: | https://github.com/X11Libre/xf86-input-evdev | xlibre-xf86-input-evdev-2.11.0.1 | -| xf86-input-void: | https://github.com/X11Libre/xf86-input-void | xlibre-xf86-input-void-1.4.2.1 | -| xf86-input-joystick: | https://github.com/X11Libre/xf86-input-joystick | xlibre-xf86-input-joystick-1.6.4.1 | -| xf86-input-keyboard: | https://github.com/X11Libre/xf86-input-keyboard | xlibre-xf86-input-keyboard-2.1.0.1 | -| xf86-input-libinput: | https://github.com/X11Libre/xf86-input-libinput | xlibre-xf86-input-libinput-1.5.0.1 | -| xf86-input-mouse: | https://github.com/X11Libre/xf86-input-mouse | xlibre-xf86-input-mouse-1.9.5.1 | -| xf86-input-synaptics: | https://github.com/X11Libre/xf86-input-synaptics | xlibre-xf86-input-synaptics-1.10.0.1 | -| xf86-input-vmmouse: | https://github.com/X11Libre/xf86-input-vmmouse | xlibre-xf86-input-vmmouse-13.2.0.1 | -| xf86-input-wacom: | https://github.com/X11Libre/xf86-input-wacom | xlibre-xf86-input-wacom-1.2.3.1 | -| xf86-video-amdgpu: | https://github.com/X11Libre/xf86-video-amdgpu | xlibre-xf86-video-amdgpu-23.0.0.2 | -| xf86-video-apm: | https://github.com/X11Libre/xf86-video-apm | xlibre-xf86-video-apm-1.3.0.1 | -| xf86-video-ark: | https://github.com/X11Libre/xf86-video-ark | xfree-xf86-video-ark-0.7.6.1 | -| xf86-video-ast: | https://github.com/X11Libre/xf86-video-ast | xlibre-xf86-video-ast-1.2.0 | -| xf86-video-ati: | https://github.com/X11Libre/xf86-video-ati | xfree-xf86-video-ati-22.0.0.1 | -| xf86-video-chips: | https://github.com/X11Libre/xf86-video-chips | xlibre-xf86-video-chips-1.5.0.1 | -| xf86-video-cirrus: | https://github.com/X11Libre/xf86-video-cirrus | xlibre-xf86-video-cirrus-1.6.0.1 | -| xf86-video-dummy: | https://github.com/X11Libre/xf86-video-dummy | xlibre-xf86-video-dummy-0.4.1.1 | -| xf86-video-fbdev: | https://github.com/X11Libre/xf86-video-fbdev | xlibre-xf86-video-fbdev-0.5.1.1 | -| xf86-video-freedreno: | https://github.com/X11Libre/xf86-video-freedreno | xlibre-xf86-video-freedreno-1.4.0.1 | -| xf86-video-geode: | https://github.com/X11Libre/xf86-video-geode | xlibre-xf86-video-geode-2.18.1.1 | -| xf86-video-i128: | https://github.com/X11Libre/xf86-video-i128 | xlibre-xf86-video-i128-1.4.1.1 | -| xf86-video-i740: | https://github.com/X11Libre/xf86-video-i740 | xlibre-xf86-video-i740-1.4.0.1 | -| xf86-video-intel: | https://github.com/X11Libre/xf86-video-intel | xlibre-xf86-video-intel-3.0.0.1 | -| xf86-video-mach64: | https://github.com/X11Libre/xf86-video-mach64 | xlibre-xf86-video-mach64-6.10.0.1 | -| xf86-video-mga: | https://github.com/X11Libre/xf86-video-mga | xlibre-xf86-video-mga-2.1.0.1 | -| xf86-video-neomagic: | https://github.com/X11Libre/xf86-video-neomagic | xlibre-xf86-video-neomagic-1.3.1.1 | -| xf86-video-nested: | https://github.com/X11Libre/xf86-video-nested | xlibre-xf86-video-nested-1.0.0.1 | -| xf86-video-nouveau: | https://github.com/X11Libre/xf86-video-nouveau | xlibre-xf86-video-nouveau-1.0.18.1 | -| xf86-video-nv: | https://github.com/X11Libre/xf86-video-nv | xlibre-xf86-video-nv-2.1.23.1 | -| xf86-video-omap: | https://github.com/X11Libre/xf86-video-omap | xlibre-xf86-video-omap-0.4.5.1 | -| xf86-video-qxl: | https://github.com/X11Libre/xf86-video-qxl | xlibre-xf86-video-qxl-0.1.6.1 | -| xf86-video-r128: | https://github.com/X11Libre/xf86-video-r128 | xlibre-xf86-video-r128-6.13.0.1 | -| xf86-video-rendition: | https://github.com/X11Libre/xf86-video-rendition | xlibre-xf86-video-rendition-4.2.7.1 | -| xf86-video-s3virge: | https://github.com/X11Libre/xf86-video-s3virge | xlibre-xf86-video-s3virge-1.11.1.1 | -| xf86-video-savage: | https://github.com/X11Libre/xf86-video-savage | xlibre-xf86-video-savage-2.4.1.1 | -| xf86-video-siliconmotion: | https://github.com/X11Libre/xf86-video-siliconmotion | xlibre-xf86-video-siliconmotion-1.7.10.1 | -| xf86-video-sis: | https://github.com/X11Libre/xf86-video-sis | xlibre-xf86-video-sis-0.12.0.1 | -| xf86-video-sisusb: | https://github.com/X11Libre/xf86-video-sisusb | xlibre-xf86-video-sisusb-0.9.7.1 | -| xf86-video-suncg14: | https://github.com/X11Libre/xf86-video-suncg14 | xlibre-xf86-video-suncg14-1.2.0 | -| xf86-video-suncg3: | https://github.com/X11Libre/xf86-video-suncg3 | xlibre-xf86-video-suncg3-1.1.3.0 | -| xf86-video-suncg6: | https://github.com/X11Libre/xf86-video-suncg6 | xlibre-xf86-video-suncg6-1.1.3.1 | -| xf86-video-sunffb: | https://github.com/X11Libre/xf86-video-sunffb | xlibre-xf86-video-sunffb-1.2.3.1 | -| xf86-video-sunleo: | https://github.com/X11Libre/xf86-video-sunleo | xlibre-xf86-video-sunleo-1.2.3.1 | -| xf86-video-suntcx: | https://github.com/X11Libre/xf86-video-suntcx | xlibre-xf86-video-suntcx-1.1.3.1 | -| xf86-video-tdfx: | https://github.com/X11Libre/xf86-video-tdfx | xlibre-xf86-video-tdfx-1.5.0.1 | -| xf86-video-trident: | https://github.com/X11Libre/xf86-video-trident | xlibre-xf86-video-trident-1.4.0.1 | -| xf86-video-vbox: | https://github.com/X11Libre/xf86-video-vbox | xlibre-xf86-video-vbox-1.0.1.1 | -| xf86-video-v4l: | https://github.com/X11Libre/xf86-video-v4l | xlibre-xf86-video-v4l-0.3.0.1 | -| xf86-video-vesa: | https://github.com/X11Libre/xf86-video-vesa | xlibre-xf86-video-vesa-2.6.0.1 | -| xf86-video-vmware: | https://github.com/X11Libre/xf86-video-vmware | xlibre-xf86-video-vmware-13.4.0.1 | -| xf86-video-voodoo: | https://github.com/X11Libre/xf86-video-voodoo | xlibre-xf86-video-voodoo-1.2.6.1 | -| xf86-video-wsfb: | https://github.com/X11Libre/xf86-video-wsfb | xlibre-xf86-video-wsfb-0.4.1.1 | -| xf86-video-xgi: | https://github.com/X11Libre/xf86-video-xgi | xlibre-xf86-video-xgi-1.6.1.1 | - - -Contact -------- - -| | | -| --- | --- | -| Mailing list: | https://www.freelists.org/list/xlibre | -| Telegram channel: | https://t.me/x11dev | -| Matrix room (mirror of tg group): | https://matrix.to/#/#xlibre:matrix.org |