2 Punkte von GN⁺ 2025-12-25 | 1 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

1 Kommentare

 
GN⁺ 2025-12-25
Hacker-News-Kommentare
  • Der Ansatz, den X-Server im Wayland-Stil neu zu gestalten, ist interessant
    Beeindruckend ist, dass Display-Server und Compositor standardmäßig integriert werden, Apps standardmäßig isoliert sind, die GLX-Remote-Funktion entfernt wurde und veraltete Protokolle konsequent verworfen wurden
    Ich weiß nicht, wer das brauchen wird, aber die Entscheidung selbst wirkt ziemlich vernünftig

    • Für Leute, die unbedingt X11 nutzen müssen, scheint es eine bessere Wahl als XLibre zu sein
    • Ich habe es zwar nicht selbst ausprobiert, aber wenn bestehende Funktionen entfernt wurden, dürfte es am Ende auf eine ähnliche Situation wie bei Wayland hinauslaufen
      Dann verstehe ich nicht, worin der Unterschied besteht. Vielleicht war die Analyse unvollständig
    • Wenn das früher erschienen wäre, hätten es vermutlich viele Leute Wayland vorgezogen
      Wenn darauf außerdem Wayland-Apps laufen, könnten sich tatsächlich noch mehr Nutzer dafür entscheiden
  • Der Name Phoenix wird viel zu oft verwendet
    Es gibt auch das Phoenix-Framework für Elixir, und ich meine, den Namen schon bei mehreren anderen Projekten gesehen zu haben
    Wie „Apollo“ ist das so ein häufiger Name, bei dem man meiner Meinung nach vor einem neuen Projekt erst einmal suchen sollte

    • Phoenix im Elixir-Ökosystem ist sogar noch vergleichsweise wenig verwirrend
      Dort gibt es viele eigenwillige Namen wie bandit, cowboy, thousand island, ranch, mint und finch
      Auch Namensdopplungen wie ExThing, ThingEx und Thingx kommen oft vor, sodass man durcheinanderkommt, was eigentlich der Standard ist
    • Schon früher wurde der Name Phoenix oft als Symbol für ein aus der Asche wiederauferstehendes Projekt verwendet
      Ich erinnere mich, dass man auch in den 1980er-Jahren neue Software auf diese Weise benannt hat
    • Firefox wollte ebenfalls einmal den Namen Phoenix verwenden und wurde wegen eines Markenrechtsproblems verklagt
      Auch bei wxPython gibt es ein Phoenix-Projekt. Cooler Name, aber viel zu häufig
  • Das Projekt ist wirklich cool
    Ich mag Wayland, aber bei Portal-Protokollen und Erweiterungsmechanismen bin ich immer noch unzufrieden
    Im Vergleich zu Windows oder macOS gibt es bei der Produktivität noch Schwächen
    Ein X11-Rewrite mit eingebauter Sicherheit klingt nach einem vielversprechenden Ansatz

    • Ich denke schon lange, dass eine aufgeräumte X-Version besser wäre als Wayland
      Sieht nach einem nützlichen Projekt aus, und ich hoffe, dass es sich weiterentwickelt
    • Du meintest, Wayland habe Schwächen bei der Produktivität; mich würde interessieren, was konkret fehlt
    • Ich finde eher, dass Windows oder macOS nicht einmal Fensterverwaltung richtig hinbekommen
      Anfang der 2000er war sogar die Installation schwierig, und für normale Nutzer war es fast unmöglich, das selbst einzurichten
      Linux-Distributionen ließen sich deutlich einfacher installieren, und wenn Windows langsam wurde, kaufte man deshalb eben einen neuen PC
    • Ich habe bei Wayland eher nicht das Gefühl, dass es bei der Produktivität fehlt
      Auch bei der Arbeit nutze ich GNOME + Wayland problemlos
  • Solche X-Erhaltungsprojekte finde ich willkommen
    Ich bevorzuge Wayland, denke aber trotzdem, dass es weiterhin Bereiche gibt, in denen X gebraucht wird
    Ein neues Entwicklerteam sollte die Last mittragen

    • Ich denke allerdings, dass so eine Entscheidung zu Fragmentierung führt
      X11 sollte man jetzt vollständig begraben und sich auf einen einzigen Display-Server konzentrieren
  • Ich weiß nicht, wie gut dieses Projekt funktionieren wird,
    aber ich finde es gut, wenn es mehr Konkurrenzprojekte gibt, die sich dem von Unternehmen geprägten Vereinheitlichungstrend entgegenstellen (z. B. Wayland, GNOME, KDE mit ihren bezahlten Entwicklern)
    Mich würde auch interessieren, wie viel Finanzierung nötig wäre, um Xorg zu modernisieren
    Wayland gibt es seit 2008, aber selbst nach fast 20 Jahren erfüllt es noch nicht alle Nutzeranforderungen
    Wenn man sich auf die engen Spezifikationen konzentriert, die Unternehmen wollen, sind die Grenzen klar erkennbar

  • Anwendungsentwickler können im Build-Skript die Release-Modi in der Form zig build --release angeben
    Nutzer können --release auch selbst übergeben
    Der Autor von Phoenix scheint den ReleaseSafe-Modus als offizielle Release-Version gewählt zu haben
    Übrigens ist Phoenix auch der Name meiner Heimatstadt

  • gpu-screen-recorder vom selben Autor ist der beste Bildschirmrekorder, den ich unter Wayland ausprobiert habe
    Selbst 4K-60-fps-Aufnahmen funktionierten sofort, ganz ohne besondere Konfiguration

  • Ich frage mich, ob bestehende X11-Apps wie xterm, emacs, xfig und ghostview funktionieren

    • Die meisten alten X11-Programme hängen von der X11-Zeichen-API ab, daher ist es gut möglich, dass sie nicht richtig funktionieren, aber die Implementierung selbst ist einfach
  • Die Unterstützung für mehrere Screens ist als Nicht-Ziel aufgeführt,
    daher frage ich mich, ob man es dann nicht mit Window-Managern verwenden kann, die virtuelle Desktops unterstützen (wie i3)

    • In X11 hat „screen“ eine bestimmte Bedeutung, daher gibt es selbst bei Unterstützung nur eines einzelnen Screens keine Probleme mit Multi-Monitor-Setups oder virtuellen Desktops
    • Eine zusammenhängende Multi-Monitor-Funktion wie Xinerama lässt sich später leicht ergänzen
  • Interessant ist, dass hier im Gegensatz zu Xorg keine XML-Protokollspezifikation zur Codegenerierung verwendet wird