
2026/06/15 4:10
Yserver:Rust で書かれた現代的な X11 サーバー
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
サマリー:
yserver は、現実世界のデスクトップ環境およびウィンドウマネージャーにとって現代的かつレガシーを排除した基盤を提供することを目的に開発された新しい Rust で書かれた X11 サーバーです。その主な目標は、間接的な GLX や陳腐な DDX ABI インターフェースといった古い依存関係を排除することであり、MATE や XFCE といった人気のある環境への完全なサポートを可能にしています。该项目は既に、AMD、Intel、Qualcomm、Apple(RDNA2 および Adreno グラフィックスアーキテクチャを含む)からの多様なハードウェアとの互換性を示しており、堅牢な拡張機能サポートを実証しています。しかし、現在大きな制限に直面しており、オープンソースドライバでの GLX 実装は成功していますが、 proprietory の NVIDIA ドライバーでは動作しません。今後の成否は、新しい構成が登場するにつれてこのドライバの制約を解決することに依存します。各種 Linux ディストリビューションを使用するユーザーにとって、yserver は従来の Xorg の即座に利用可能な代替手段であり、特定の Rust ツールチェーンを必要とするものの、古いシステムの負荷からは解放されます。この現代的アプローチにより、開発者や企業が非効率的なレガシーインターフェースに依存せずに重要なハードウェアアクセラレーションを活用でき、オープンソースのグラフィックスコンピューティングへのよりクリーンな将来の道を提供すると期待されます。
本文
yserver:非機能性の排除を実現する近代的な X11 サーバー
yserver は、Rust 言語から一から作成された最新式の X11 サーバーです。Xorg のクローンを作ることを目的とせず、最新の Linux 環境において実際のデスクトップやアプリケーションを実行しつつ、以下の「非機能の重荷」を排除した実用的なサーバーを提供することを目指しています。
- マルチスクリーンへの対応
- 真彩(TrueColor)以外のビジュアル
- 間接的な GLX
- DDX ドライバー ABI
- バイト順序を反転させたクライアントなど
詳細な設計とスコープについては docs/high-level-design.md をご参照ください。
名前について
プロジェクト開始時に採用された作業用名称です。GitHub 上には既に同名のプロジェクトが存在しますが、X11 サーバー向けではないもののみとなります。将来的に名称変更される可能性はありますが、現時点では優先事項ではありません。
ステータスと対応状況
standalone DRM/KMS を使用することで、以下のフルデスクトップ環境を実行可能となりました。
対応しているデスクトップ環境
- MATE
- XFCE
- Cinnamon
テスト済みのウィンドウマネージャー
- FVWM3
- e16
- wmaker
サポートされている X サーバー拡張機能
以下の拡張機能がサポートされています。
- BIG-REQUESTS
- Composite
- DAMAGE
- DPMS
- DRI3
- GLX
- Generic Event Extension
- MIT-SCREEN-SAVER
- MIT-SHM
- Present
- RANDR
- RENDER
- SHAPE
- SYNC
- X-Resource
- XFIXES
- XInputExtension
- XC-MISC
- XKEYBOARD
- XTEST
GLX 拡張機能の詳細
GLX_EXT_texture_from_pixmap 拡張機能が実装されており、以下のドライバ上でテスト済みです。
| ドライバ | ステータス | 備考 |
|---|---|---|
| AMD | ✅ テスト済み | |
| Intel | ✅ テスト済み | |
| Asahi | ✅ テスト済み | |
| Qualcomm | ✅ テスト済み | |
| NVIDIA (専用) | ❌ 動作しない | - |
| NVIDIA ( Nouveau) | ⚠️ 未テスト / 不可確実 | GTX 1050 での Xorg 起動不能が確認されている |
注釈: Nouveau ドライバーが他の NVIDIA カードで機能する可能性はありますが、現時点では検証されていません。
デモ
TFP(Texture From Pixmap)を実装した現在、Compiz によるコンポジティングに対応しています。
- デモ動画:compiz-720p.mp4 (※リンクは例示)
ハードウェア検証済み
yserver(スタンドアロンの DRM/KMS)は、以下のハードウェア環境において MATE/XFCE/Cinnamon デスクトップをエンドツーエンドでテストしています。
- AMD
- Ryzen 9 6900HX(Rembrandt, RDNA2, RADV)
- i9 13900k + RX580(Polaris/GCN4, RADV)
- Intel
- i5-7200U(Kaby Lake, ANV)内蔵 GPU
- NVIDIA
- i5 6500
- GTX 1050(専用ドライバ使用)
- Snapdragon X1
- Snapdragon X1 E80100(Adreno X1, Turnip)
- Apple Silicon
- Apple M1 MBA、M2 MBP(Asahi Linux 上:apple-drm KMS + asahi GPU、Mesa AGX-V 使用)
- バーチャルマシン
- virtme-ng 内蔵の virtio-gpu(Venus パススルー方式)
スタンドアロンの DRM/KMS サーバーの実行方法
yserver は libseat が利用可能であればそれを用いてシートの管理を行います。また、原子 KMS を直接駆動することもできますが、その場合はユーザーに
/dev/dri/ および /dev/input/ へのアクセス権限が必要です。
実行には最新の安定版 Rust ツールチェーンおよび以下の依存パッケージが必要です。
Arch Linux
sudo pacman -S just gcc seatd libxshmfence libxkbcommon libinput shaderc systemd-libs fontconfig
Ubuntu / Debian
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
ディスプレイマネージャー(lightdm)との併用
lightdm は、グラフィカルなログイン時の X サーバーとして yserver を起動させることができます。コマンド指定は可能であり、gdm や sddm と異なります。
バイナリのインストール
インストールには sudo 権限が必要です。インストール先は
/usr/local/bin/yserver です。
just install
lightdm の設定
yserver を lightdm に指定するには、以下の設定ファイルを作成します。
ファイルパス:
/etc/lightdm/lightdm.conf.d/99-yserver.conf
[Seat:*] xserver-command=/usr/local/bin/yserver
lightdm を再起動して適用するには(自由な TTY から):
sudo systemctl restart lightdm
グリーターが表示された後にログインを行うと、lightdm の PAM スタックによってログインキーリングが解凍されます。
TTY にて直接実行
自由な TTY に切り替えた後、以下のコマンドを実行します。
just startx
これにより yserver が起動し、その後に
~/.xinitrc(またはフォールバックとして /etc/X11/xinit/xinitrc)が実行されます。
便利なキーバインド
- Ctrl-Alt-Backspace: サーバーを破棄し、コンソールに戻る
- Ctrl-Alt-Enter: 現在の作業ディレクトリ(CWD)内でフレームバッファのスキャンアウト(スクリーンショット)を作成
- Ctrl-Alt-D: 全ての描画可能なオブジェクトを PPM ファイルとして CWD にダンプ
レジレッション(後退回避)カバー率
プロトコルの完全性を評価するために、X.Org X テストスイート(xts5)を yserver に対して実行しています。各シナリオにおける最新のパス数は docs/test-status.md に記録されています。
ライセンス
本プロジェクトは MIT ライセンスの下で利用可能です。詳細については LICENSE ファイルをご確認ください。