Nel progetto Phoenix si sta tentando di creare da zero un nuovo server X, senza utilizzare i precedenti del X.org Server e mirando a sviluppare un'alternativa moderna che espanda il protocollo X11 e fornisca compatibilità con Wayland. Attualmente, Phoenix non è ancora pronto per un uso quotidiano, ma consente già di lavorare con applicazioni semplici che utilizzano GLX, EGL o Vulkan per l'output grafico, eseguendo Phoenix sopra un server X esistente. Il codice è scritto in Zig e distribuito sotto licenza GPLv3.
In Phoenix non si intende implementare tutta la funzionalità del protocollo X11 disponibile nel X.org Server e supportare hardware obsoleto. Ad esempio, invece di supportare completamente gli elementi del protocollo X11 per la gestione dei font, si prevede di aggiungere solo le operazioni basilari necessarie per le applicazioni reali. Invece di supportare i tradizionali driver video X.Org, per l'output grafico si utilizzano Linux DRM (Direct Rendering Manager) e Mesa GBM (Generic Buffer Management).
Si prevede che la riduzione delle funzionalità non influisca sulla capacità di eseguire le applicazioni comunemente utilizzate, anche quelle che utilizzano GTK2. Questo approccio semplificherà notevolmente l'implementazione, mantenendo la compatibilità con i programmi rilasciati negli ultimi 20 anni, e garantirà il funzionamento su hardware non più vecchio di 15-20 anni.
Inoltre, si prevede di aggiungere nuove estensioni al protocollo X11, tenendo conto delle tendenze moderne, come il supporto HDR, il corretto supporto per configurazioni multi-monitor (framebuffer separati per ciascun monitor), la possibilità di specificare il DPI in base ai monitor, la modifica adattiva della frequenza di aggiornamento del monitor (VRR) e la protezione dalla comparsa di tearing durante l'uscita. In Phoenix, è stato inoltre modificato il comportamento nella gestione delle stringhe: per impostazione predefinita viene utilizzato UTF-8 e ISO Latin-1 è applicato solo quando specificamente richiesto.
Per migliorare la sicurezza dell'applicazione in Phoenix, per impostazione predefinita, le app vengono isolate l'una dall'altra e possono interagire e accedere a finestre o eventi di input altrui solo dopo un'esplicita conferma dei permessi tramite un'apposita finestra di dialogo o concedendo diritti all'avvio. Per mantenere la compatibilità con i vecchi client X11, in caso di mancanza di permessi adeguati saranno trasmessi dati vuoti invece di errori. Le combinazioni di tasti globali funzioneranno solo mantenendo premuto il tasto modificatore o fornendo singoli diritti di accesso.
Per eseguire applicazioni che supportano solo Wayland, si prevede di implementare un supporto integrato per questo protocollo o di utilizzare interfacce esterne, come 12to11.
Fonte: opennet.ru
