Состоялся стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.20. Ветка 1.20 обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Композитный сервер Weston, предоставляющий код и рабочие примеры для использования Wayland в десктоп-окружениях и встраиваемых решениях, развивается в рамках отдельного цикла разработки.
Основные изменения в протоколе:
Изменения в приложениях, окружениях рабочего стола и дистрибутивах, связанные с Wayland:
Напомним, что 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.
Основные изменения в протоколе:
- Реализована официальная поддержка платформы FreeBSD, тесты для которой добавлены в систему непрерывной интеграции.
- Прекращена поддержка сборочной системы autotools, вместо которой теперь применяется Meson.
- В протокол добавлена возможность "wl_surface.offset", позволяющая клиентам обновлять смещение буфера поверхности независимо от самого буфера.
- В протокол добавлены возможности "wl_output.name" и "wl_output.description", позволяющие клиенту идентифицировать вывод без привязки к расширению протокола xdg-output-unstable-v1.
- В определениях протокола для событий представлен новый атрибут "type", а сами события теперь могут помечаться как деструкторы.
- Проведена работа над ошибками, в том числе устранены состояния гонки при удалении прокси в многопоточных клиентах.
Изменения в приложениях, окружениях рабочего стола и дистрибутивах, связанные с Wayland:
- В XWayland и проприетартном драйвере NVIDIA реализованы изменения, позволяющие обеспечить полноценную поддержку аппаратного ускорения OpenGL и Vulkan в приложениях X11, выполняемых при помощи DDX-компонента (Device-Dependent X) XWayland.
- Основная ветка во всех репозиториях Wayland переименована с "master" на "main", так как слово "master" считается последнее время неполиткорректным, напоминает о рабстве и воспринимается как оскорбительное некоторыми участниками сообщества.
- В Ubuntu 21.04 осуществлён переход на использование по умолчанию Wayland.
- В Fedora 35, Ubuntu 21.10 и RHEL 8.5 добавлена возможность использования рабочего стола на базе протокола Wayland на системах с проприетарными драйверами NVIDIA.
- Сформирован выпуск композитного сервера Weston 9.0, в котором появилась оболочка kiosk-shell, позволяющая обособленно запускать отдельные приложения в полноэкранном режиме, например, для создания интернет-киосков, демонстрационных стендов, электронных вывесок и терминалов самообслуживания.
- Компания Canonical опубликовала оболочку Ubuntu Frame c полноэкранным интерфейсом для создания интернет-киосков, использующую протокол Wayland.
- В системе потокового видеовещания OBS Studio реализована поддержка протокола Wayland.
- В GNOME 40 и 41 продолжено оттачивание поддержки протокола Wayland и компонента XWayland. Разрешено использование сеансов Wayland для систем с GPU NVIDIA.
- Продолжено портирование рабочего стола MATE для Wayland. Для работы без привязки к X11 в окружении Wayland адаптированы просмотрщик документов Atril, System Monitor, текстовый редактор Pluma, эмулятор терминала Terminal и другие компоненты рабочего стола.
- Стабилизирован сеанс KDE, работающий с использованием протокола Wayland. В композитном менеджере KWin и рабочем столе KDE Plasma 5.21, 5.22 и 5.23 значительно улучшена работа сеанса на базе протокола Wayland. Сборки Fedora Linux с рабочим столом KDE по умолчанию переведены на использование Wayland.
- В Firefox 93-96 включены изменения, решающие проявляющиеся в Wayland-окружениях проблемы, связанные с обработкой всплывающих окон, буфером обмена и масштабированием на экранах с разным DPI. Порт Firefox для Wayland доведён и до общего паритета в функциональности со сборкой для X11 при работе в GNOME-окружении Fedora.
- Опубликована компактная пользовательская оболочка на основе композитного сервера Weston - wayward.
- Доступен первый выпуск labwc, композитного сервера для Wayland с возможностями, напоминающими оконный менеджер Openbox.
- Компания System76 работает над созданием нового пользовательского окружения COSMIC, использующего Wayland.
- Сформированы выпуски пользовательского окружения Sway 1.6 и композитного сервера Wayfire 0.7, использующих Wayland.
- Для Wine предложен обновлённый драйвер, позволяющий запускать через Wine приложения, использующие GDI и OpenGL/DirectX, напрямую в окружении на базе Wayland, без применения прослойки XWayland и избавившись от привязки Wine к протоколу X11. В драйвере добавлена поддержка Vulkan и многомониторных конфигураций.
- Компания Microsoft реализовала возможность запуска Linux-приложений с графическим интерфейсом в окружениях на базе подсистемы WSL2 (Windows Subsystem for Linux). Для вывода задействован композитный менеджер RAIL-Shell, использующий протокол Wayland и основанный на кодовой базе Weston.
- Изменился метод разработки пакета wayland-protocols, содержащего набор протоколов и расширений, дополняющих возможности базового протокола Wayland и предоставляющих возможности, необходимые для построения композитных серверов и пользовательских окружений. Cтадия развития протколов "unstable" заменена на "staging", для того чтобы сгладить процесс стабилизации протоколов, прошедших тестирование в рабочих окружениях.
- Для Wayland подготовлено расширение протокола для перезапуска оконной среды без остановки приложений, которое позволит решить проблему с завершением приложений в случае сбоя в работе оконной среды.
- В Mesa добавлено необходимое для Wayland EGL-расширение EGL_EXT_present_opaque. Решены проблемы с отображением прозрачности в играх, запущенных в окружениях на базе протокола Wayland. Реализована поддержка динамического обнаружения и загрузки альтернативных бэкендов GBM (Generic Buffer Manager) для улучшение поддержки Wayland на системах с драйверами NVIDIA.
- Продолжается развитие KWinFT, форка KWin, сфокусированного на Wayland. Проект также развивает библиотеку wrapland с реализацией обвязки над libwayland для Qt/C++, продолжающей развитие KWayland, но избавленной от привязки к Qt.
- Дистрибутив Tails наметил перевод пользовательского окружения на использование протокола Wayland, что позволит повысить защищённость всех графических приложений за счёт улучшения контроля за тем, как приложения взаимодействуют с системой.
- Wayland задействован по умолчанию в мобильных платформах Plasma Mobile, Sailfish, webOS Open Source Edition, Tizen и AsteroidOS;
- Для тестирования работы 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.
Доступен Wayland 1.20
www.opennet.ru