Прощай, X11: Wayland 1.24 окончательно меняет правила игры для Linux-десктопов

Протокол обновлён: расширения, API и поддержка буферов.


xxe179fwe2bn8j2nj4qkkk6naazlp6u0.jpg


Спустя 13 месяцев разработки опубликован стабильный релиз протокола Wayland 1.24 — механизма межпроцессного взаимодействия и набора библиотек, обеспечивающих работу современных графических окружений в Linux. Новый выпуск полностью совместим на уровне API и ABI с предыдущими версиями 1.x, при этом включает преимущественно исправления и умеренные обновления. Исходный код проекта доступен под лицензией MIT на GitLab , а спецификация — на официальном сайте .

Главным новшеством версии стал интерфейс wl_fixes , позволяющий решать несовместимости в реализации базовых протоколов. К примеру, метод "destroy_registry" позволяет удалить объект wl_registry, исключив его из дальнейшего использования клиентами и остановив передачу событий.

Во взаимодействии с клавиатурой добавлено новое псевдо-состояние repeated, позволяющее композитному серверу отличать удержание клавиши от множественных одиночных нажатий. Это особенно важно для систем удалённого доступа и игр.

В библиотеке появились функции wl_display_dispatch_queue_timeout() и wl_display_dispatch_timeout() , обеспечивающие диспетчеризацию с учётом таймаутов. Это дополнение позволяет композитным серверам гибко реагировать на отсутствие событий.

Для управления памятью теперь предусмотрены функции wl_shm_buffer_ref() и wl_shm_buffer_unref(), которые дают доступ к разделяемой памяти даже после удаления основного объекта. А новые методы wl_proxy_get_interface() и wl_resource_get_interface() улучшают интеграцию с языками с динамической типизацией.

Также появилась функция wl_resource_post_error_vargs() , работающая с va_list и расширяющая возможности по регистрации ошибок.

Параллельно развиваются и дополнительные протоколы , включающие поддержку HDR ( color-management ), размытие фона ( ext-background-effect ), перенос состояния окон ( xx-session-management ) и системные сигналы ( xdg-system-bell ).

За прошедший год экосистема Wayland заметно изменилась. Библиотека GTK перевела X11-бэкенд в статус устаревшего, Fedora 43 исключает поддержку X11 в GNOME, а Ubuntu и Kubuntu по умолчанию используют только Wayland. KDE, Budgie и MATE готовят или уже внедрили аналогичные изменения. Композитные серверы вроде Weston, Niri, Hyprland, Sway и других активно обновляются и реализуют новые возможности Wayland.

Wayland реализует модель, в которой отрисовка интерфейса выполняется клиентом, а композитный сервер отвечает за объединение буферов. Это повышает безопасность, изоляцию ввода/вывода и снижает накладные расходы на рендеринг. Проект развивается в связке с Weston, референсной реализацией , а поддержка Wayland реализована в большинстве популярных графических библиотек — от GTK и Qt до SDL и EFL.

Наконец, для запуска X11-приложений поверх Wayland используется компонент XWayland , аналогичный Xwin и XQuartz.