27.01.2022

Доступен Wayland 1.20

Состоялся стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.20. Ветка 1.20 обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Композитный сервер Weston, предоставляющий код и рабочие примеры для использования Wayland в десктоп-окружениях и встраиваемых решениях, развивается в рамках отдельного цикла разработки.

Основные изменения в протоколе:

  • Реализована официальная поддержка платформы 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.

Источник.