Phoenix — современный X-сервер, написанный с нуля на Zig

Несмотря на то, что 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 также рассматривает возможность расширения протокола при необходимости. Например, планируется добавить новые функции, такие как отображение разрешения экрана для каждого монитора, чтобы обеспечить корректную работу приложений в системах с разным разрешением экрана. При необходимости Phoenix добавит расширения протокола для таких функций, как HDR, при этом продолжая работать с существующим программным обеспечением.
Важно отметить, что проект не направлен на замену Xorg. Phoenix намеренно не поддерживает устаревшее оборудование, малоизвестные функции протокола и такие конфигурации, как несколько экранов X11 или непрямой рендеринг GLX, и полностью ориентирован на современные системы.
Совместимость с Wayland является частью долгосрочного плана. Разработчики говорят, что Phoenix в конечном счёте может начать напрямую поддерживать клиентов Wayland или использовать инструменты-посредники для запуска приложений, работающих только с Wayland, в среде X11. Также рассматривается возможность запуска Phoenix в среде Wayland в качестве альтернативы Xwayland.
Наконец, как мы уже упоминали, проект находится на ранней стадии разработки, и пока неясно, будет ли он доработан до стабильных версий, готовых к использованию, и получит ли он более широкое распространение. А пока для получения дополнительной информации об этой новой инициативе перейдите по ссылке.
Редактор: AndreyEx