Nell'ambito del progetto Phoenix, si è tentato di creare da zero un nuovo server X, che non utilizzi le conoscenze dell'X.org Server e sia focalizzato sulla creazione di un'alternativa moderna, che espanda il protocollo X11 e offra compatibilità con Wayland. In questa fase di sviluppo, Phoenix non è ancora pronto per un utilizzo quotidiano, ma consente già di lavorare con semplici applicazioni che utilizzano GLX, EGL o Vulkan per l'output grafico, eseguendo Phoenix in modo annidato sopra un server X esistente. Il codice è scritto in Zig e viene distribuito con licenza GPLv3.
In Phoenix non si intende implementare tutta la funzionalità del protocollo X11 disponibile nell'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 di base necessarie nelle applicazioni reali. Invece di supportare i tradizionali driver video X.Org, per l'output grafico vengono utilizzati Linux DRM (Direct Rendering Manager) e Mesa GBM (Generic Buffer Management).
Si prevede che il ridimensionamento delle funzionalità non influenzi la possibilità di eseguire applicazioni comuni, anche quelle che utilizzano GTK2. Questo approccio consentirà di semplificare notevolmente l'implementazione, mantenendo la compatibilità con i programmi rilasciati negli ultimi 20 anni, oltre a garantire il funzionamento su hardware non più vecchio di 15-20 anni.
Inoltre, nel protocollo X11 si prevede di aggiungere nuove estensioni che tengano conto delle tendenze moderne, come il supporto HDR, il corretto supporto per configurazioni a più monitor (framebuffer separati per ogni monitor), la possibilità di specificare il DPI in relazione ai monitor, il cambiamento adattivo della frequenza di aggiornamento del monitor (VRR) e la protezione dall'insorgere di tearing nell'output. Phoenix ha anche modificato il comportamento nella gestione delle stringhe: per impostazione predefinita viene utilizzato UTF-8, mentre ISO Latin-1 viene applicato solo quando viene specificata esplicitamente questa codifica.
Per aumentare la sicurezza dell'applicazione in Phoenix, di default le finestre vengono isolate l'una dall'altra e possono interagire e accedere a finestre o eventi di input altrui solo dopo esplicita conferma delle autorizzazioni tramite un dialogo speciale o fornendo diritti al momento dell'avvio. Per mantenere la compatibilità con i vecchi client X11, in caso di mancanza delle dovute autorizzazioni verranno restituiti dati vuoti invece di generare errori. Le combinazioni di tasti globali funzioneranno solo se il tasto modificatore è tenuto premuto o se vengono forniti diritti di accesso separati.
Per avviare applicazioni che supportano solo Wayland, si prevede di implementare il supporto integrato per questo protocollo o utilizzare middleware esterni, come 12to11.
Fonte: opennet.ru
