В рамките на проекта Phoenix е направен опит за създаване на нов X-сървър от нулата, който не използва разработки от X.org Server и е насочен към създаване на съвременна алтернатива, разширяваща протокола X11 и предоставяща възможности за съвместимост с Wayland. На текущия етап на развитие Phoenix все още не е готов за ежедневно използване, но вече позволява работа с прости приложения, които използват GLX, EGL или Vulkan за графичен изход, като Phoenix е внедрен върху съществуващ X-сървър. Кодът е написан на Zig и се разпространява под лиценз GPLv3.
В Phoenix не планират да реализират цялата функционалност на протокола X11, достъпна в X.org Server, и да поддържат остаряло оборудване. Например, вместо пълна поддръжка на елементите на протокола X11 за работа с шрифтове, планират да добавят само основни операции, които са нужни в реални приложения. Вместо поддръжка на класическите видеодрайвери на X.Org, за графичен изход се използват Linux DRM (Direct Rendering Manager) и Mesa GBM (Generic Buffer Management).
Очаква се ограничаването на функционалността да не повлияе на възможността за стартиране на широко използвани приложения, дори и на тези, които използват GTK2. Такъв подход ще позволи значително опростяване на реализацията, като същевременно запази съвместимост с програми, издадени през последните 20 години, а също така да осигури работа на оборудване, не по-старо от 15-20 години.
В същото време в протокола X11 планират да се добавят нови разширения, отразяващи съвременните тенденции, като поддръжка на HDR, коректна поддръжка на многомониторни конфигурации (разделени фреймбуфери за всеки монитор), възможност за указване на DPI, привързан към мониторите, адаптивна промяна на честотата на опресняване на монитора (VRR), защита от загуба на кадри (tearing) при изхода. В Phoenix също е променено поведението при обработка на низове — по подразбиране се използва UTF-8, докато ISO Latin-1 се прилага само при явно посочване на тази кодировка.
За да се увеличи сигурността на приложението в Phoenix, приложенията по подразбиране се изолират едно от друго и могат да взаимодействат и получават достъп до чужди прозорци или събития за въвеждане само след явно потвърждение на правомощията чрез специален диалог или предоставяне на права при стартиране. За запазване на съвместимостта със стари X11-клиенти, вместо да се извеждат грешки в случай на липса на съответни правомощия, ще се предават празни данни. Глобалните комбинации от клавиши ще работят само при задържане на клавиша модификатор или предоставяне на отделни права за достъп.
За стартиране на приложения, поддържащи само Wayland, се планира реализиране на вградена поддръжка на този протокол или активиране на външни слоеве, като 12to11.
Източник: opennet.ru
