Выпуск Wayland 1.12
Увидел свет стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.12, а также развиваемый параллельно композитный сервер Weston 1.12. Одновременно сформированы корректирующие выпуски Wayland 1.11.1 и Weston 1.11.1, в которых проведено бэкпортирование некоторых исправлений из ветки 1.12. Ветка 1.12 обратно совместима на уровне API и ABI с выпусками 1.x, но дополнительно содержит порцию улучшений, расширяющих возможности композитного сервера Weston. Следующий выпуск 1.13 запланирован на февраль 2017 года.
В Weston развиваются технологии, содействующие появлению полноценной поддержки протокола Wayland в Enlightenment, GNOME, KDE и других пользовательских окружениях. Разработка Weston нацелена на предоставление высококачественной кодовой базы и рабочих примеров для использования Wayland в десктоп-окружениях и встраиваемых решениях, таких как платформы для автомобильных информационно-развлекательных систем, смартфонов, телевизоров и прочих потребительских устройств.
Основные новшества Weston 1.12:
- Внутренний код Weston вынесен в обособленную библиотеку libweston, что упрощает задействование функциональности Weston в других композитных серверах. В том числе новую библиотеку теперь использует и собственный композитный сервер Weston;
- Представлена новая библиотека libweston-desktop, в которую по аналогии с libweston вынесены дополнительные возможности, востребованные при формировании окружения рабочего стола. API библиотеки построен вокруг программного интерфейса xdg_shell и предлагает такие возможности как средства для обработки состояний окна, всплывающие окна и взаимодействие с Xwayland. Библиотеки libweston и libweston-desktop пока позиционируются как нестабильные, что подразумевает возможное изменение API в следующих выпусках;
- Реализована поддержка 6 версии протокола xdg_shell и весь клиентский код портирован на неё;
- Добавлен API для захвата и ограничения перемещения указателя. Используя протокол wp_pointer_constraints клиенты могут определить области окна за пределы которых не сможет выйти указатель. Области могут иметь произвольную форму, не ограничивающуюся прямоугольником;
- Добавлен протокол wl_relative_pointer, при помощи которого клиенты могут получать сведения о движении указателя в виде смещений относительно прошлой позиции, что позволяет продолжить получать сведения о движении даже при невозможности изменения абсолютной позиции, например, при достижении края экрана;
- Прекращена поддержка бэкенда для устройств Raspberry Pi (rpi-backend), так как код был привязан к проприетарному стеку драйверов.
Улучшения, связанные с протоколом и API Wayland 1.12:
- Проведена работа по чистке и уточнению документации. Добавлены описания для ранее не документированных областей протокола;
- Добавлен API wl_display_add_protocol предоставляющий средства для интерактивной отладки запросов, а также API для изучения клиентов и их ресурсов. В отличие от режима WAYLAND_DEBUG=1, новый API позволяет анализировать логи на лету, в том числе наглядно визуализируя в пользовательском интерфейсе;
- Внесены улучшения в метод идентификации версий в заголовочных файлах при сканировании XML-спецификаций проткола, что позволило более качественно выявлять и откатываться на другую версию в случаях, когла клиенты и композитные серверы поддерживают разные версии протокола.
Статус поддержки Wayland в окружениях рабочего стола и дистрибутивах:
- В GNOME 3.22, который ожидается сегодня вечером, проведено оттачивание поддержки Wayland, которая в прошлом выпуске была объявлена пригодной для использования обычными пользователями. В том числе при работе GNOME поверх Wayland появилась поддержка планшетов Wacom, вращения экрана и экранной клавиатуры. Полноценная поддержка Wayland появилась в WebKitGTK+ 2.14;
- Разработчики Fedora Linux в очередной раз утвердили план по переходу Fedora 25 на использование по умолчанию окружения рабочего стола GNOME на базе Wayland. Некоторые проблемы пока остаются нерешёнными, но до релиза Fedora 25 разработчики намерены успеть их устранить;
- Экспериментальный сеанс рабочего стола GNOME на базе Wayland поставляется в Ubuntu GNOME (следует установить пакет gnome-session-wayland и выбрать на экране входа «GNOME on wayland»);
- Наблюдается значиетельный прогресс поддержке Wayland в KDE. Принято решение по переходу по умолчанию на использование Wayland нестабильных выпусков Live-cборок KDE Neon (unstable-ветка Developer Edition), формируемых на основе срезов из Git-репозиториев KDE. KWayland принят в состав KDE Frameworks 5 в качестве фреймворка первого уровня, т.е. является функциональным дополнением к Qt и, кроме Qt, не требует дополнительных зависимостей. В находящемся в разработке выпуске KDE Plasma 5.8 продолжается работа по достижению паритета в функциональности при работе KDE поверх X11 и Wayland. В реализации пока остаются незначительные проблемы и не вся запланированная функциональность реализована, но окружение уже пригодно для оценки и тестирования широкой аудиторией;
- В состав Qt 4.7 добавлен модуль Qt Wayland Compositor с многопоточной системой отрисовки для встраиваемых устройств, использующая протокол Wayland. Модуль может использоваться для создания собственных композитных серверов Wayland, применяя QML или C++ API. В состав также входит базовая реализация панели запуска программ и мозаичного оконного менеджера, написанных целиком на QML. Имеется поддержка стандарта XDG-Shell и возможность работы в системах с несколькими экранами. В выпуске Qt 4.8 будет проведена стабилизация модуля Wayland Compositor, с которого будет снят флаг экспериментальной разработки;
- В Enlightenment 0.21 существенно улучшена поддержка Wayland, в том числе обеспечено восстановление сеанса после краха/перезапуска композитного сервера и добавлены реализуемые на стороне клиента эффекты, такие как трансформация окон;
- В ОС DragonFly BSD развивается порт с Wayland и Weston. Обеспечена поддержка XWayland;
- Wayland задействован по умолчанию в мобильных платформах Plasma Mobile, Sailfish 2 и Tizen 3.
- В панели Cairo-Dock реализована возможность работы в окружении композитного сервера Weston.
- Работа по добавлению поддержки Wayland ведётся для рабочих столов LXQt и MATE.
- Развиваются новые десктоп-окружения, работающее только на базе технологий Wayland: Quantum Shell, Hawaii и Orbital.
- Для тестирования работы GNOME, KDE и Enlightenment, Hawai и Orbital поверх Wayland выпускается специальный Live-дистрибутив Rebecca Black Linux.
- В проприетарном драйвере NVIDIA 364.x обеспечена официальная поддержка Wayland, включая все необходимые расширения EGL, библиотеку libnvidia-egl-wayland.so и KMS API.
Напомним, что Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавиться от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK+ и Qt, берущих на себя работу по компоновке содержимого окон. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK3+, Qt 5, 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 и может обрастать функциональностью через плагины и дополнения. Пользовательские оболочки и расширенные функций управления окнами предлагается реализовывать в форме внешних бэкендов к Wayland.
Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland используется DDX-компонент XWayland (Device-Dependent X), похожий по организации работы на Xwin и Xquartz для платформ Win32 и OS X. Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. При таком подходе процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland.
© OpenNet