После девяти месяцев разработки представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.22. Ветка 1.22 обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Композитный сервер Weston, предоставляющий код и рабочие примеры для использования Wayland в десктоп-окружениях и встраиваемых решениях, развивается в рамках отдельного цикла разработки.
Основные изменения в протоколе:
- В программный интерфейс wl_surface добавлена поддержка событий wl_surface::preferred_buffer_scale и wl_surface::preferred_buffer_transform, через которые передаётся информация об изменении композитным сервером уровня масштабирования и параметров трансформации для поверхности.
- В программный интерфейс wl_pointer добавлено событие wl_pointer::axis, показывающее физическое направление движения указателя для определения корректного направления прокрутки в виджетах.
- В wayland-server добавлен метод для получения глобального имени и реализована функция wl_client_add_destroy_late_listener.
Изменения в приложениях, окружениях рабочего стола и дистрибутивах, связанные с Wayland:
- В основной состав Wine включена начальная поддержка использования в окружениях на базе протокола Wayland без применения XWayland и компонентов X11. На текущем этапе добавлен драйвер winewayland.drv и компоненты unixlib, а также проведена подготовка к обработке системой сборки файлов с определениями протокола Wayland. В одном из следующих выпусков планируют включить изменения, обеспечивающие вывод в окружении Wayland.
- Продолжено улучшение поддержки Wayland в выпусках KDE Plasma 5.26 и 5.27. Реализована возможность отключения вставки из буфера обмена средней кнопкой мыши. Улучшено качество масштибирования окон приложений, запускаемых при помощи XWayland. Появилась поддержка плавной прокрутки при наличии мышей с колёсом высокого разрешения. В приложениях для рисования, таких как Krita, появилась возможность отслеживания наклона и вращения пера на планшетах. Добавлена поддержка настройки глобальных горячих клавиш. Обеспечен автоматический выбор уровня масштабирования для экрана.
- Для Xfce подготовлены экспериментальные выпуски панели xfce4-panel и рабочего стола xfdesktop, в которых предложена начальная поддержка работы в окружениях на базе протокола Wayland.
- Пользовательское окружение дистрибутива Tails переведено с X-сервера на использование протокола Wayland.
- В Qt 6.5 добавлен программный интерфейс QNativeInterface::QWaylandApplication для прямого обращения к родным для Wayland объектам, которые используются во внутренних структурах Qt, а также для получения доступа к информации о последних действия пользователя, которая может быть востребована для передачи расширениям протокола Wayland.
- Для операционной системы Haiku подготовлена прослойка для обеспечения совместимости с Wayland, позволяющая запускать тулкиты и приложения, использующие Wayland, в том числе приложения на базе библиотеки GTK.
- В системе 3D-моделирования Blender 3.4 реализована поддержка протокола Wayland, позволяющая напрямую запускать Blender в окружениях на базе Wayland без использования прослойки XWayland.
- Опубликован выпуск пользовательского окружения Sway 1.8, использующего Wayland.
- Доступно пользовательское окружение PaperDE 0.2, использующее Qt и Wayland.
- В Firefox улучшены средства для предоставления доступа к экрану в окружениях на базе протокола Wayland. Устранены проблемы, связанные с плавностью прокрутки содержимого, генерацией события click при нажатии на полосу прокрутки и прокруткой за пределы содержимого в окружениях на базе Wayland.
- Опубликован выпуск экранной оболочки для мобильных устройств Phosh 0.22.0, основанной на технологиях GNOME и использующей композитный сервер Phoc, работающий поверх Wayland.
- Компания Valve продолжает развивать композитный сервер Gamescope (ранее известный как steamcompmgr), использующий протокол Wayland и применяемый в операционной системе SteamOS 3.
- Опубликован выпуск DDX-компонента XWayland 23.1.0, обеспечивающего запуск X.Org Server для организации выполнения X11-приложений в окружениях на базе Wayland.
- Выпуск labwc 0.6, композитного сервера для Wayland с возможностями, напоминающими оконный менеджер Openbox (проект преподносится как попытка создания альтернативы Openbox для Wayland).
- Развивается lxqt-sway, порт пользовательского окружения LXQt, поддерживающий Wayland. Кроме того, другой проект LWQt разрабатывает вариант пользовательской оболочки LXQt на базе Wayland.
- Сформирован выпуск композитного сервера Weston 11.0, в котором продолжена работа над инфраструктурой для управления цветом и создана база для будущей поддержки конфигураций с несколькими GPU.
- Продолжено портирование рабочего стола MATE для Wayland.
- Компания System76 разрабатывает новый вариант пользовательского окружения COSMIC, использующий Wayland.
- Wayland задействован по умолчанию в мобильных платформах Plasma Mobile, Sailfish, webOS Open Source Edition, Tizen и AsteroidOS.
- На базе Wayland развиваются оболочки Ubuntu Frame и wayward.
- Для тестирования работы KDE, GNOME, Enlightenment, Wayfire, Liri и Sway поверх Wayland выпускается специальный Live-дистрибутив Rebecca Black Linux.
Напомним, что 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.