網站搜尋

Phoenix 崛起為一個用 Zig 從零編寫的現代 X 伺服器


Phoenix 是一個全新從零開始用 Zig 編寫的 X 伺服器,旨在現代化 X11,而不依賴 Xorg 的程式碼。

雖然 Wayland 已在很大程度上取代了 Xorg,而且大多數主要的 Linux 發行版和桌面環境要麼已經停止對這個過時顯示協議的支援,要麼正在處理中,但延長 Xorg 壽命或以類似替代方案取代它的努力仍在繼續。最近的例子包括 XLibre Xserver 和 Wayback 等專案。而現在,又有一個新名字加入了這個行列:Phoenix。

這是一個新的 X 伺服器專案,採取了與 X11 根本不同的方法。它完全用 Zig 程式語言從零開始編寫,不是 Xorg 代碼庫的另一個分支,也沒有重複使用其舊有代碼。相反地,根據開發者的說法,Phoenix 旨在展示 X11 協議本身並非天生過時,可以用更簡單、更安全、更現代的方式實現。

Phoenix 是為真正的桌面和專業使用而設計的,而不是為了完整的協議支援。它僅支援現代應用程式所需的 X11 功能,包括像基於 GTK2 的舊軟體。透過省略不常用或過時的部分,Phoenix 保持了簡單性,同時仍支援多數應用程式。

目前,Phoenix 仍處於實驗階段,尚未準備好供日常使用。它可以運行使用 GLX、EGL 或 Vulkan 的簡單硬體加速應用程式,但只能在另一個 X 伺服器下的嵌套環境中運行。這種情況將持續,直到該專案準備好應對更高需求的使用為止。

在安全性方面,這實際上是 Xorg 最受批評的其中一個方面,Phoenix 預設會隔離應用程式,對於螢幕錄製或全域快捷鍵等敏感功能的存取,需透過明確的權限機制進行授權。重要的是,這是在不破壞現有客戶端的情況下完成的,因為未經授權的存取嘗試會返回虛擬資料,而不是協議錯誤。

在核心功能方面,Phoenix 內建了一個合成器,預設情況下可實現無撕裂渲染,支援對全螢幕應用程序禁用合成,並且設計旨在降低合成器和垂直同步延遲。適當的多顯示器支援是重點,允許不同的刷新率、可變刷新率顯示器,以及未來的 HDR 支援,而不依賴單一的全局幀緩衝區。

Phoenix 也在考慮在需要時擴展協議。例如,計畫引入像是每個顯示器的 DPI 報告等新功能,以確保應用程式在混合 DPI 設定下能正確縮放。如有需要,Phoenix 會為 HDR 等功能添加協議擴展,同時仍可與現有軟體協作。

重要的是要明確指出,該專案並不旨在取代 Xorg。Phoenix 故意避免支援舊硬體、晦澀的協議功能,以及像是多個 X11 螢幕或間接 GLX 渲染等配置,而是完全專注於現代系統。

Wayland 相容性是長期計畫的一部分。開發者表示,Phoenix 未來可能會直接支援 Wayland 用戶端,或使用橋接工具在 X11 環境中運行僅支援 Wayland 的應用程式。作為 Xwayland 的替代方案,將 Phoenix 嵌套在 Wayland 下運行也正在考慮中。

最後,如我所提到的,這個項目目前仍處於早期階段,是否能發展成生產就緒的穩定版本並被更廣泛使用,還有待觀察。在此之前,欲了解更多關於這個新計畫的資訊,請點此查閱。