После шести месяцев разработки представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.21. Ветка 1.21 обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Несколько дней назад сформировано корректирующее обновление композитного сервера Weston 10.0.1, который развивается в рамках отдельного цикла разработки. Weston предоставляет код и рабочие примеры для использования Wayland в десктоп-окружениях и встраиваемых решениях.
Основные изменения в протоколе:
- В программный интерфейс wl_pointer добавлена поддержка события wl_pointer.axis_value120 для высокоточного скроллинга на манипуляторах мышь с колесом прокрутки высокого разрешения.
- В сервер добавлены новые функции wl_signal_emit_mutable (аналог wl_signal_emit, поддерживающий корректную работу в ситуации, когда один обработчик сигналов, удаляет другой обработчик) и wl_global_get_version (позволяет узнать общую версию API).
- Разработка переведена на платформу GitLab с использованием инфраструктуры проекта FreeDesktop.org.
- Проведена чистка и переработка структур и функций, связанных с настройкой курсора.
- Протокол wl_shell отмечен как необязательный для реализации в композитных серверах и объявлен устаревшим. Для создания пользовательских оболочек рекомендовано использовать протокол xdg_shell, предоставляющий интерфейс для взаимодействия с поверхностями как с окнами, что позволяет передвигать поверхности по экрану, сворачивать, разворачивать, изменять размер и т.д.
- Повышены требования к сборочной системе, для сборки теперь необходим инструментарий Meson как минимум версии 0.56. При компиляции включён флаг “c_std=c99”.
Изменения в приложениях, окружениях рабочего стола и дистрибутивах, связанные с Wayland:
- В KDE планируют в 2022 году довести сеанс рабочего стола Plasma на базе протокола Wayland до состояния, пригодного для повседневного использования существенной долей пользователей. Значительно улучшена поддержка Wayland в выпусках KDE Plasma 5.24 и 5.25, в том числе добавлена поддержка глубины цветности больше 8-бит на канал, реализован режим “DRM leasing” для шлемов виртуальной реальности, обеспечена поддержка создания скриншотов и сворачивания всех окон.
- В Fedora 36 на системах с проприетарными драйверами NVIDIA по умолчанию задействован сеанс GNOME на базе протокола Wayland, который раньше применялся только при использовании открытых драйверов.
- В Ubuntu 22.04 для большинства конфигураций по умолчанию задействован сеанс рабочего стола на базе протокола Wayland, но использование X-сервера оставлено по умолчанию для систем с проприетарными драйверами NVIDIA.
Для Ubuntu предложен PPA-репозиторий с пакетом qtwayland в который из ветки Qt 5.15.3, сопровождаемой проектом KDE, перенесены исправления, связанные с улучшением поддержки протокола Wayland. - Опубликован выпуск пользовательского окружения Sway 1.7, использующего Wayland.
- В ночных сборках Firefox по умолчанию включена поддержка Wayland. В Firefox исправлена проблема с блокировкой потоков, налажено масштабирование всплывающих окон и обеспечена работа контекстного меню при проверке правописания. В соответствии со статистикой сервиса Firefox Telemetry, анализирующего данные, поступающие в результате отправки телеметрии и обращения пользователей к серверам Mozilla, доля Linux-пользователей Firefox, работающих в окружениях на базе протокола Wayland, пока не превышает 10%.
- Опубликован выпуск экранной оболочки для мобильных устройств Phosh 0.15.0, основанной на технологиях GNOME и использующей композитный сервер Phoc, работающий поверх Wayland.
- Компания Valve продолжает развивать композитный сервер Gamescope (ранее известный как steamcompmgr), использующий протокол Wayland и применяемый в операционной системе SteamOS 3.
- Опубликован выпуск DDX-компонента XWayland 22.1.0, обеспечивающего запуск X.Org Server для организации выполнения X11-приложений в окружениях на базе Wayland. В новой версии добавлена поддержка протокола DRM Lease, который используется для формирования стереокартинки с разными буферами для левого и правого глаза при выводе на шлемы виртуальной реальности.
- Проект labwc развивает композитный сервер для Wayland с возможностями, напоминающими оконный менеджер Openbox (проект преподносится как попытка создания альтернативы Openbox для Wayland).
- Доступен первый выпуск LWQt, варианта пользовательской оболочки LXQt на базе Wayland.
- Компания Collabora в рамках проекта wxrd, развивает новый композитный сервер на базе Wayland для систем виртуальной реальности.
- Опубликован выпуск проекта Wine-wayland 7.7, позволяющего использовать Wine в окружениях на базе протокола Wayland, без применения XWayland и компонентов X11.
- Аарон Плaттнер (Aaron Plattner), один из ведущих разработчиков проприетарных драйверов NVIDIA, опубликовал отчёт о состоянии поддержки Wayland в драйверах NVIDIA.
- Сформирован выпуск композитного сервера Weston 10.0, в котором добавлена поддержка библиотеки libseat, предоставляющей функции для организации доступа к совместно используемым устройствам ввода и вывода, а также добавлены компоненты для управления цветом, позволяющие преобразовывать цвета, выполнять гамма-коррекцию и работать с цветовыми профилями.
- Продолжено портирование рабочего стола MATE для Wayland.
- Компания System76 работает над созданием нового пользовательского окружения COSMIC, использующего Wayland.
- Компания Microsoft реализовала возможность запуска Linux-приложений с графическим интерфейсом в окружениях на базе подсистемы WSL2 (Windows Subsystem for Linux). Для вывода задействован композитный менеджер RAIL-Shell, использующий протокол Wayland и основанный на кодовой базе Weston.
- 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.