2 Punkte von GN⁺ 2025-12-25 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Phoenix ist ein neuer X-Server, der von Grund auf in der Sprache Zig geschrieben wurde, ohne einen Fork von Xorg zu verwenden, und zielt auf eine moderne Alternative ab
  • Derzeit können einfache Anwendungen, die GLX-, EGL- oder Vulkan-Grafik verwenden, verschachtelt innerhalb eines bestehenden X-Servers ausgeführt werden; ein eigenständiger Betrieb wird noch nicht unterstützt
  • Für Einfachheit werden nur Anwendungen unterstützt, die in den letzten 20 Jahren geschrieben wurden, sowie Hardware aus den letzten 15 Jahren; der Server funktioniert ohne Server-Treiber-Interface
  • Die Sicherheit wird verbessert, indem Protokollnachrichten automatisch geparst werden und der Zugriff zwischen Anwendungen durch eine Isolationsstruktur auf Basis von Berechtigungsanfragen eingeschränkt wird
  • Moderne Technologien wie HDR, VRR, Multi-Monitor und ein integrierter Compositor werden unterstützt; außerdem sind Wayland-Kompatibilität und Erweiterungen des X11-Protokolls geplant

Überblick über Phoenix

  • Phoenix ist ein moderner X-Server als Ersatz für den Xorg-Server, eine vollständig neu geschriebene Implementierung in Zig
    • Kein Fork von Xorg, sondern mit Fokus auf eine einfachere und sicherere Architektur
  • Derzeit ist es noch nicht vollständig für den produktiven Einsatz bereit und unterstützt nur den verschachtelten Betrieb innerhalb eines bestehenden X-Servers (nested mode)
    • Hardwarebeschleunigtes Rendering auf Basis von GLX, EGL und Vulkan ist möglich

Ziele

Einfachheit

  • Ein einfacherer Server als Xorg, der nur einen Teil des X11-Protokolls unterstützt
    • Enthält nur die Funktionen, die für Anwendungen benötigt werden, die in den letzten 20 Jahren geschrieben wurden
  • Zielhardware ist auf Geräte der letzten 15 Jahre beschränkt, die Linux DRM und Mesa GBM unterstützen
  • Wie Xorg wird kein separates Server-Treiber-Interface verwendet
    • Die Struktur ähnelt der eines Wayland-Compositors

Sicherheit

  • Automatisches Parsen von Protokollnachrichten sorgt für mehr Sicherheit
    • Mit der Zig-Build-Option ReleaseSafe werden ungültige Operationen wie das Überschreiten von Array-Indizes automatisch erkannt
  • Anwendungen laufen standardmäßig isoliert voneinander
    • Interaktionen mit anderen Apps sind nur über GUI-Berechtigungsanfragen oder vorab erteilte Berechtigungen möglich
    • Beispiel: Eine Bildschirmaufnahme-App kann nur das angegebene Fenster aufzeichnen
  • Bei eingeschränktem Zugriff erhält der Client Dummy-Daten statt eines Fehlers
  • Globale Tastenkürzel funktionieren, wenn Modifizierertasten (ctrl, shift usw.) enthalten sind
    • Für globale Tastenkürzel ohne Modifizierertasten ist eine explizite Berechtigung erforderlich
  • Per Option kann auf ein mit Xorg identisches Verhalten umgeschaltet werden

Unterstützung moderner Technologien

  • Unterstützung für aktuelle Display-Technologien wie Multi-Monitor, unterschiedliche Bildwiederholraten, VRR und HDR
  • Verarbeitung erfolgt pro Display separat statt über einen einzelnen Framebuffer

Verbesserte Grafikverarbeitung

  • Standardmäßig Rendering ohne Tearing und ein integrierter Compositor
    • Wird ein externer Compositor (z. B. picom) ausgeführt, wird dieser automatisch deaktiviert
    • Wenn eine Vollbild-App vsync deaktiviert, wird das Verhalten an diese App angepasst
  • Ziel ist eine geringere Latenz bei vsync und im Compositor

Neue Standards

  • Definition und Dokumentation einer DPI-Eigenschaft pro Monitor (randr property)
    • Anwendungen können Inhalte passend zur monitorabhängigen DPI skalieren

Erweiterungen des X11-Protokolls

  • Bei Bedarf sind Erweiterungen des X11-Protokolls für neue Funktionen wie HDR vorgesehen

Wayland-Kompatibilität

  • Es wird berücksichtigt, dass manche Apps möglicherweise nur für Wayland verfügbar sind
    • Phoenix kann Wayland direkt unterstützen oder über eine Wayland–X11-Bridge (z. B. 12to11) ausgeführt werden

Verschachtelter Display-Server

  • Hardwarebeschleunigter verschachtelter Betrieb innerhalb von X11 oder Wayland ist möglich
    • Nützlich für das Debugging von Phoenix sowie für Tests von Window-Managern und Compositoren
    • Kann in Wayland-Umgebungen als alternativer Server zu Xwayland dienen

Nicht-Ziele (Non-goals)

  • Ein vollständiger Ersatz des Xorg-Servers ist nicht das Ziel
    • Xorg behält mehr X11-Funktionen und Unterstützung für ältere Hardware
  • Mehrere X11-Screens werden nicht unterstützt (nur Multi-Monitor)
  • Aufrufe von GrabServer sind wirkungslos
  • Clients/Server mit Endian-Swap werden bei Bedarf erneut geprüft
  • Keine Unterstützung für indirektes GLX (Remote-Rendering)
    • Die Komplexität ist hoch, und Remote-Streaming ist effizienter
    • Falls nötig, ist Remote-Rendering über einen GLX-Proxy möglich

Unterschiede zum X11-Protokoll

  • Einige Teile des X11-Kernprotokolls, darunter schriftbezogene Funktionen, sind nicht implementiert
  • Für Zeichenketten wird standardmäßig UTF-8 verwendet
    • Ausnahme: wenn das Protokoll ausdrücklich ISO Latin-1 vorgibt

Installation und Build

  • Installationsbefehle:
    zig build -Doptimize=ReleaseSafe
    sudo zig build install -p /usr/local -Doptimize=ReleaseSafe
    
  • Für die Deinstallation muss /usr/local/bin/phoenix manuell gelöscht werden
  • Entwicklungs-Build:
    zig build
    
    • Ergebnis-Binärdatei: ./zig-out/bin/phoenix
    • Build und Ausführung gleichzeitig möglich: zig build run

Dokumentation des X11-Protokolls erzeugen

  • Befehl: zig build -Dgenerate-docs=true
    • Ergebnis: .txt-Dateien werden unter ./zig-out/protocol/ erzeugt
    • Automatisch generierte Dokumentation im Stil offizieller Dokumente; derzeit noch in Arbeit

Abhängigkeiten

  • Zig 0.14.1
  • x11 (xcb) — für den verschachtelten X11-Modus (-Dbackends=x11)
  • wayland (wayland-client, wayland-egl) — für den verschachtelten Wayland-Modus (-Dbackends=wayland, derzeit nicht unterstützt)
  • drm (libdrm, gbm) — für den eigenständigen Betrieb (-Dbackends=drm, derzeit nicht unterstützt)
  • OpenGL (libglvnd) — stellt gl und egl bereit

Noch keine Kommentare.

Noch keine Kommentare.