Доступен Wayland 1.24
После 13 месяцев разработки представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.24. Ветка 1.24 обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Наработки проекта распространяются под лицензией MIT. Эталонный композитный сервер Weston, предоставляющий код и рабочие примеры для использования Wayland в десктоп-окружениях и встраиваемых решениях, развивается в рамках отдельного цикла разработки.
Основные изменения в протоколе:
Реализован интерфейс wl_fixes, позволяющий решать проблемы с другими программными интерфейсами базовых протоколов, которые не могут быть устранены собственными возможностями этих интерфейсов. Например, запрос «wl_fixes: destroy_registry» позволяет ликвидировать объект wl_registry, после чего клиент не сможет его использовать, а композитный сервер прекратит передачу через него событий.
В программном интерфейсе wl_keyboard: key реализовано новое состояние «repeated», позволяющее композитным серверам обрабатывать повторные нажатия при удерживании клавиш как отдельные состояния, а не просто как поток повторных событий нажатия, что может быть полезным для организации работы с удалённым рабочим столом.
Добавлены функции wl_display_dispatch_queue_timeout () и wl_display_dispatch_timeout () для диспетчеризации событий в очереди с учётом таймаута (функции wl_display_dispatch и wl_display_dispatch_queue возвращают 0 только при отсутствии событий, а варианты *_timeiout ещё и при наступлении таймаута).
Добавлены функции wl_shm_buffer_ref () и wl_shm_buffer_unref () для доступа к разделяемой памяти, связанной c буфером wl_shm_buffer, после его ликвидации (например, когда клиент завершает работу). Функции позволяют отвязать буфер wl_shm_buffer от времени жизни основного ресурса wl_buffer, когда композитному серверу требуется отложить переход к новому состоянию.
Добавлены функции wl_proxy_get_interface () и wl_resource_get_interface (), возвращающие wl_interface для указанного ресурса, что востребовано в обвязках для языков с динамической типизацией.
Добавлена функция wl_resource_post_error_vargs (), выступающая альтернативой функции wl_resource_post_error () с возможностью передать список аргументов для форматирования строки (va_list).
Наиболее заметные события, связанные с Wayland и произошедшие с момента публикации прошлого выпуска:
Улучшение поддержки Wayland в проприетарных драйверах NVIDIA.
KDE планирует оставить только поддержку Wayland. Разделение кода kwin_x11 и kwin_wayland.
В Kubuntu 25.10 будет оставлен только сеанс на базе Wayland.
- В GDM по умолчанию оставлена только поддержка Wayland.
- GTK перевёл бэкенд для X11 в разряд устаревших.
В Fedora 43 решено удалить из репозитория пакеты, используемые в GNOME для работы поверх X-сервера. Все пользователи GNOME c X11 будут принудительно переключить на сеанс на базе Wayland.
В среде рабочего стола Budgie будет оставлена только поддержка Wayland.
- В Xfce 4.20 реализована частичная поддержка Wayland.
MATE 1.28 с экспериментальной поддержкой Wayland.
Wayback — композитный сервер Wayland для запуска рабочих столов на базе X11
Компания Valve запустила проект Frog для ускорения продвижения новых протоколов Wayland.
Библиотека построения графических интерфейсов Cosmoe, использующая Wayland и API в стиле BeOS.
Включение по умолчанию драйвера Wayland в Wine.
Переход Raspberry Pi OS на использование Wayland.
Выпуск графического тулкита FLTK 1.4.0 с поддержкой Wayland.
В набор Wayland-Protocols добавлена дополнительная фаза продвижения протоколов — «experimental», нацеленная на снижение барьера при интеграции протоколов, ускорение доведения протоколов до разработчиков и стимулирование ранней реализации в существующих проектах.
AMD развивает собственный композитный сервер ACS, использующий Wayland.
Семь альфа-выпусков среды рабочего стола COSMIC.
Обновление композитных серверов: Weston 14.0, Niri 25.05, Wayland Maker 0.5, miracle-wm 0.5, Hyprland 0.49, labwc 0.8.3, Cage 0.2, Wayfire 0.9, Sway 1.11.
Добавленные за последний год расширения протоколов, дополняющих базовый протокол Wayland и поставляемых в отдельном наборе Wayland-Protocols:
color-management — возможности для управления цветом и поддержки расширенного динамического диапазона яркости (HDR, High Dynamic Range).
color-representation-v1 — задание цветового представления Wayland-поверхности.
«xdg-toplevel-tag» — позволяет Wayland-клиентам прикреплять теги к поверхностями верхнего уровня, которые композитный сервер может использовать для идентификации окон после перезапуска приложения.
ext-background-effect — применение эффектов к полупрозрачным частям Wayland-поверхности, таких как размытие фона.
pointer-warp — позволяет приложению мгновенно переместить указатель в указанную позицию.
xx-session-management — восстановление состояния окон для прерванных сеансов (например, после аварийного завершения композитного менеджера).
xx-input-method — развитие нового протокола для использования методов ввода текста.
ext-data-control — позволяет привилегированным клиентам управлять обработкой данных, например, для реализации менеджеров буфера обмена.
- ext-workspace — реализует концепцию виртуальных рабочих столов и предлагает события с информацией о состоянии рабочих столов, а также возможности для активации и деактивации рабочих столов.
xdg-system-bell — позволяет выводить системный сигнал, который может использоваться, например, как предупреждение в эмуляторе терминалов.
xdg-toplevel-icon — для привязки пиктограммы к окну верхнего уровня.
ext-image-capture-source и ext-image-copy-capture — захват выводимого на экран контента.
fifo — реализует FIFO-механизм (первым пришёл — первым ушёл) обработки очереди обновления содержимого отображаемой поверхности.
- commit-timing — позволяет привязать ограничение времени к содержимому поверхности (композитный сервер должен отобразить изменение контента по возможности через указанное время, но не раньше).
Напомним, что Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавиться от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK и Qt, берущих на себя работу по компоновке содержимого окон.
Wayland решает многие проблемы с безопасностью X11, так как в отличие от последнего изолирует ввод и вывод для каждого окна, не позволяет клиенту получить доступ к содержимому окон других клиентов, а также не допускает перехват связанных с другими окнами событий ввода. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK, Qt, SDL (начиная с выпуска 2.0.2), Clutter и EFL (Enlightenment Foundation Library). Начиная с Qt 5.4 в состав включён модуль QtWayland с реализацией компонентов для работы Qt-приложений в окружении композитного сервера Weston, развиваемого проектом Wayland.
Взаимодействие с аппаратным обеспечением в Wayland/Weston, например, проведение инициализации, переключение видеорежимов (drm modesetting) и управление памятью (GEM для i915 и TTM для radeon и nouveau) графических карт, может производиться напрямую через модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя. Композитный сервер Weston может работать не только с использованием DRM-модуля ядра Linux, но и поверх X11, другого композитного сервера Wayland, фреймбуфера и RDP. Кроме того, развиваются проекты по обеспечению работы поверх графического стека платформы Android.
В рамках проекта Weston развивается одна из реализаций композитного сервера. В роли композитного сервера также может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в KWin. В текущем виде Weston уже вышел за рамки набора примеров для тестирования протокола Wayland и может обрастать функциональностью через плагины и дополнения. Пользовательские оболочки и расширенные функций управления окнами предлагается реализовывать в форме внешних бэкендов к Weston. Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland используется DDX-компонент XWayland (Device-Dependent X), похожий по организации работы на Xwin и Xquartz для платформ Win32 и macOS.


Источник: http://www.opennet.ru/opennews/art.shtml? num=63536
© OpenNet
