← Back to news

Yserver: A modern X11 server written in Rust

github.com|89 points|74 comments|by Venn1|Jun 14, 2026

yserver: A Contemporary X11 Server Crafted in Rust

yserver is a ground-up reimplementation of an X11 server, developed entirely using the Rust programming language.

🎯 Project Objectives

The primary goal is to deliver a functional X11 server capable of powering modern Linux desktop environments, window managers, and various applications. To achieve this, the project intentionally discards legacy architectural baggage, such as:

  • Support for multiple screens
  • Non-TrueColor visuals
  • Indirect GLX
  • The DDX driver ABI
  • Clients with swapped endianness

Note on Naming: The title yserver is currently a "working name"—the first one that came to mind. Because other GitHub projects share this name (though none are X11 servers), it may be rebranded in the future.

🚀 Current Status & Capabilities

The standalone DRM/KMS version of yserver is now capable of running full-featured desktops including Cinnamon, XFCE, and MATE.

Supported Extensions

The server implements and tests the following protocol extensions:

  • BIG-REQUESTS
  • Composite
  • DAMAGE
  • DPMS
  • DRI3
  • GLX (including GLX_EXT_texture_from_pixmap)
  • Generic Event Extension
  • MIT-SCREEN-SAVER
  • MIT-SHM
  • Present
  • RANDR
  • RENDER
  • SHAPE
  • SYNC
  • X-Resource
  • XFIXES
  • XInputExtension
  • XC-MISC
  • XKEYBOARD
  • XTEST

Hardware Compatibility Matrix

VendorStatusSpecific Hardware Tested
AMD✅ SupportedRyzen 9 6900HX (RDNA2), i9 13900k + RX580 (Polaris)
Intel✅ SupportedVarious modern chipsets
Apple✅ SupportedM1 MBA, M2 MBP (via Asahi Linux / apple-drm / AGX-V)
Qualcomm✅ SupportedTested and functional
NVIDIA❌ UnsupportedProprietary drivers will NEVER work. Nouveau failed on GTX 1050.

Visual Proof

With the implementation of TFP, the server now supports Compiz. Compiz Demo Placeholder (Reference: compiz-720p.mp4)

🛠️ Technical Architecture & Setup

The server's execution flow can be visualized as follows:

Prerequisites

You will need a recent stable Rust toolchain. Depending on your distribution, install the following:

Arch Linux

sudo pacman -S just gcc seatd libxshmfence libxkbcommon libinput shaderc systemd-libs fontconfig

Ubuntu

sudo apt install just gcc libseat-dev libxshmfence-dev libxkbcommon-dev libinput-dev glslc libudev-dev libfontconfig-dev

Alpine Linux

export RUSTFLAGS=" -C target-feature=-crt-static "
apk add gcc musl-dev fontconfig-dev freetype-dev libxshmfence-dev libxkbcommon-dev libinput-dev libseat-dev shaderc

🖥️ Deployment and Usage

Option A: Integration with LightDM

Since lightdm allows for a configurable X-server command, it is the recommended display manager.

  1. Install the binary (requires root): just install \rightarrow installs to /usr/local/bin/yserver
  2. Configure LightDM: Create /etc/lightdm/lightdm.conf.d/99-yserver.conf with the following content:
    [Seat:*]
    xserver-command=/usr/local/bin/yserver
    
  3. Restart the service: sudo systemctl restart lightdm

Option B: Manual TTY Launch

Switch to an available TTY and execute:

just startx

This triggers yserver and loads your ~/.xinitrc (or the system default at /etc/X11/xinit/xinitrc).

Useful Hotkeys:

  • Ctrl + Alt + Backspace: Kill the server and return to the console.
  • Ctrl + Alt + Enter: Capture a framebuffer screenshot in the current directory.
  • Ctrl + Alt + D: Export all drawables as .ppm files to the current directory.

🧪 Quality Assurance

To ensure protocol adherence and completeness, the project utilizes:

  1. xts5: The X.Org X Test Suite.
  2. rendercheck: For rendering validation.

Current progress and pass rates are documented in docs/test-status.md.

📊 Repository Statistics

The project is overwhelmingly written in Rust, as shown by the language distribution: Rust Percentage=97.4%\text{Rust Percentage} = 97.4\%

  • Stars: 274
  • Forks: 15
  • Watchers: 6
  • Releases: 11 tags