The first significant release of the X11 server yserver, written from scratch in Rust and supporting the latest X11 protocol extensions, has been published. The project does not aim to replicate all the capabilities of Xorg Server, focusing only on the functionality necessary to run modern desktop environments, window managers, applications, and graphic libraries (GTK, Qt, SDL, GLFW). Tested environments include MATE, Xfce, and Cinnamon, as well as window managers FVWM3, e16, and wmaker. The project's code is released under the MIT license.
In yserver, it has been decided not to support obsolete and specific features, such as handling multiple X11 screens in one server (multi-monitor output is supported), color modes other than TrueColor, indirect rendering (indirect GLX), DDX driver API, old font handling methods, and connecting clients with a different byte order (translation between big-endian and little-endian).
Graphical output is organized through DRM/KMS and Mesa Vulkan drivers. For session management and organizing access to shared input and output devices, the libseat library is used. In addition to the standalone X server, ynest is provided — a backend for nested running, supporting operation from Xwayland or another X11.server.
The work has been tested on systems with AMD Ryzen 9 6900HX (Rembrandt, RDNA2, mesa driver RADV), AMD RX580 (Polaris/GCN4, RADV), Intel i5-7200U (Kaby Lake, mesa driver ANV), NVIDIA GTX 1050, Snapdragon X1 X1E80100 (Adreno X1, Turnip), Apple M1 MBA, M2 MBP, as well as in virtualization systems with virtio-gpu and the Venus virtual GPU. Currently, only operation in Linux is supported, but support for FreeBSD is planned.
Supported X11 extensions:
- BIG-REQUESTS
- Composite
- DAMAGE
- DPMS
- DRI3
- GLX
- Generic Event Extension
- MIT-SCREEN-SAVER
- MIT-SHM
- Present
- RANDR
- RENDER
- SHAPE
- SYNC
- X-Resource
- XFIXES
- XInputExtension
- XKEYBOARD
- XTEST
Source: opennet.ru
