Выпуск Wayland 1.14 и композитного сервера Weston 3.0
Представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.14, а также развиваемого параллельно композитного сервера Weston 3.0. Ветка Wayland 1.14 обратно совместима на уровне API и ABI с выпусками 1.x и содержит только исправления нескольких ошибок и удаление неиспользуемых полей из структуры wl_client.
В Weston развиваются технологии, содействующие появлению полноценной поддержки протокола Wayland в Enlightenment, GNOME, KDE и других пользовательских окружениях. Разработка Weston нацелена на предоставление высококачественной кодовой базы и рабочих примеров для использования Wayland в десктоп-окружениях и встраиваемых решениях, таких как платформы для автомобильных информационно-развлекательных систем, смартфонов, телевизоров и прочих потребительских устройств.
Смена номера версии Weston на 3.0 обусловлена изменениями ABI, нарушающими совместимость. В частности, в libweston изменён размер структур weston_output и weston_compositor. В остальном отмечаются мелкие новшества, такие как улучшение интеграции композитного сервера с DRM-модулем вывода через фреймбуфер (drm_fb), включение libdrm в число обязательных зависимостей, реализация глобального обработчика вывода на несколько мониторов (вместо привязки к каждому устройству вывода), незначительное сокращение времени запуска.
В библиотеке libweston проведён небольшой рефакторинг интерфейса управления выводом, включены неэкспортируемые вызовы weston_compositor_add_output и weston_output_update_matrix. В оболочке для автомобильных информационно-развлекательных систем ivi-shell проведена чистка кода, добавлен API add_screen_remove_layer, удалены API layer_set_orientation и surface_set_orientation.
Статус поддержки Wayland в окружениях рабочего стола и дистрибутивах:
- В Ubuntu 17.10 решено использовать рабочий стол GNOME с применением по умолчанию Wayland вместо традиционного X-сервера.
- Fedora 26 стал вторым выпуском, в котором по умолчанию предложен сеанс GNOME на базе Wayland. По сравнению с Fedora 25 обеспечено применение дробного масштабирования (например, теперь можно увеличить элемент не в 2 раза, а в 1.5) для подбора оптимального размера элементов на экранах с высокой плотностью пикселей (HiDPI);
- В GNOME 3.24 представлена очередная порция улучшений, связанных с поддержкой Wayland. В оконный менеджер Mutter добавлена поддержка расширений EGLStreams и EGLDevice, позволяющих использовать проприетарные драйверы NVIDIA (начиная с выпуска 370) для запуска GNOME поверх Wayland. Добавлена возможность использования графических планшетов Wacom в окружениях на базе Wayland;
- Продолжается работа по достижению паритета в функциональности при запуске KDE поверх X11 и Wayland. В KDE Plasma 5.10 при использовании Wayland реализована полноценная поддержка раскладок клавиатур, в том числе добавлен переключатель раскладки в системном лотке, горячие клавиши для смены раскладки, возможность смены раскладки в локальном контексте (для приложения, окна, виртуального рабочего стола), поддержка IPС-интерфейса для смены раскладки из приложений. В KWin добавлена поддержка корректного масштабирования для экранов с разной плотностью размещения пикселей, например, при подключении HiDPI-экрана и обычного монитора.
- В основные нестабильные сборки KDE Neon Developer Edition, в рамках которых формируются Live-окружение с актуальными версиями программ и компонентов KDE, добавлена поддержка Wayland. Сеанс на базе Wayland уже вполне пригоден для работы, но по умолчанию не предлагается из-за невозможности использования с некоторыми графическими картами и проблематичности организации отката в случае несовместимости оборудования с Wayland;
- Для FreeBSD подготовлены порты, необходимые для сборки KDE с поддержкой Wayland;
- В Qt 5.9 внесена большая порция улучшений в Qt Wayland Compositor, многопоточную систему отрисовки для встраиваемых устройств, использующую протокол Wayland. Модуль может использоваться для создания собственных композитных серверов Wayland, применяя QML или C++ API. Имеется поддержка стандарта XDG-Shell и возможность работы в системах с несколькими экранами. В качестве примера применения Qt Wayland Compositor развивается рабочий стол Grefsen;
- Использующие Wayland пользовательские окружения papyros-shell и Hawaii объединились в новый проект Liri. Liri базируется на Qt 5 (QML) и продвигает оформление в стиле Material Design. Рабочий стол развивается командой дистрибутива LiriOS, примечательного использованием вместо традиционных пакетов готовых системных срезов на основе технологии OSTree, при которой системный образ атомарно обновляется из Git-подобного хранилища, позволяющего применять методы версионного контроля к компонентам дистрибутива;
- В Enlightenment ведётся работа по улучшению поддержки Wayland;
- В ОС DragonFly BSD развивается порт с Wayland и Weston, имеется поддержка XWayland;
- Wayland задействован по умолчанию в мобильных платформах Plasma Mobile, Sailfish 2 и Tizen 3.
- В панели Cairo-Dock предусмотрена возможность работы в окружении композитного сервера Weston.
- В рамках проекта AsteroidOS развивается новая открытая ОС для умных часов, использующая Qt5 и Wayland;
- Работа по добавлению поддержки Wayland ведётся для рабочих столов LXQt и MATE.
- Развивается десктоп-окружение Orbital, работающее только на базе технологий Wayland;
- Для тестирования работы GNOME, KDE и Enlightenment, Hawai и Orbital поверх Wayland выпускается специальный Live-дистрибутив Rebecca Black Linux.
Напомним, что 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 и может обрастать функциональностью через плагины и дополнения. Пользовательские оболочки и расширенные функций управления окнами предлагается реализовывать в форме внешних бэкендов к Weston.
Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland используется DDX-компонент XWayland (Device-Dependent X), похожий по организации работы на Xwin и Xquartz для платформ Win32 и OS X. Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. При таком подходе процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland.
© OpenNet