Доступен Wayland 1.23

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

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

  • В libwayland реализован API, позволяющий клиенту определить максимальный размер внутреннего буфера соединений на стороне сервера. Базовый максимальный размер буфера выставляется через интерфейс wl_display, а новый API позволяет клиентам изменять его в привязке к каждому клиентскому соединению. C практической стороны изменение позволяет использовать буферы большего размера в специфичных Wayland-клиентах, таких как Xwayland, которым свойственна большая интенсивность событий ввода.
  • Для запросов (request), событий (event) и перечислений (enum) предоставлена возможность использования XML-атрибута “deprecated-since” для пометки устаревших элементов. В терминологии Wayland запросы – это сообщения, отправляемые клиентом к серверу; события –
    это сообщения передаваемые от сервера к клиенту; перечисления – это связанные с определённым именем наборы числовых значений, которыми манипулирует протокол.
  • В утилиту wayland-scanner, предназначенную для генерации заголовочных файлов и кода на языке Си на основе XML-файлов с описанием протокола, добавлен режим “enum-header”, включающий указание в заголовочных файлах только “перечислений”.
  • В wayland-scanner обеспеченна генерация проверочных функций (validator) для “перечислений” на стороне сервера.
  • Добавлен API для назначения очереди имени с целью упрощения последующей отладки.
  • Добавлены функции wl_client_get_user_data() и wl_client_set_user_data(), упрощающие прикрепление произвольных данных к клиенту.
  • Добавлен запрос wl_shm.release, позволяющий клиенту информировать сервер о прекращении использования разделяемого объекта, что позволяет серверу освободить связанную с ним память.
  • Добавлена поддержка платформы OpenBSD.

Связанные с Wayland события, произошедшие с момента публикации прошлого выпуска:

  • Опубликован XWayland 24.1.0 с поддержкой технологии Explicit Sync и улучшением поддержки архитектур 2D-ускорения GLAMOR и EXA.
  • Обновление композитного сервера labwc (Lab Wayland Compositor) с возможностями, напоминающими оконный менеджер Openbox.
  • Проект wprs, развивающий для Wayland менеджер сеансов, похожий на утилиту screen, но для графических приложений.
  • Публикация композитного сервера Niri, использующего Wayland и предлагающего метод мозаичной (tiling) компоновки с группировкой окон в бесконечно прокручиваемую на экране ленту.
  • Обновление набора протоколов и расширений Wayland-Protocols:1.34,1.33,1.32,1.35.
  • Разработка библиотеки SDL3, применяющей Wayland по умолчанию.
  • Выпуск среды рабочего стола LXQt 2.0.0 с поддержкой Wayland в файловом менеджере PCManFM-Qt, системе уведомлений, рабочем столе, утилите для запуска программ (Runner), панели, интерфейсе выхода из системы, интерфейсе настройки LXQt и большинстве приложений.
  • Релиз пользовательского окружения Sway 1.9, использующего Wayland.
  • Новый композитный менеджер miracle-wm, базирующийся на Wayland и компонентах для построения композитных менеджеров Mir.
  • Louvre – новая библиотека для разработки композитных серверов на базе Wayland.
  • Работа по реализации поддержки Wayland в Xfce.
  • Начальная поддержка Wayland в среде рабочего стола Budgie.
  • Начальная поддержка Wayland в среде рабочего стола Cinnamon.
  • Почти завершено портирование рабочего стола MATE для Wayland.
  • Дистрибутив Lubuntu переходит на использование Qt 6 и Wayland.
  • В KDE 6 по умолчанию предложен сеанс, использующий протокол Wayland. Реализована поддержка Wayland-расширений для управления цветом.
  • В платформе Electron включён режим декорирования окон для Wayland.
  • Обновление композитного сервера Wayfire, использующего Wayland и позволяющего формировать интерфейсы пользователя c 3D-эффектами в стиле 3D-плагинов к Compiz.
  • Поддержка Wayland в IDE IntelliJ и OpenJDK.
  • Поддержка Wayland в текстовом редакторе GNU Emacs.
  • В GNOME в сеансе на базе Wayland реализована поддержка программного KVM-коммутатора Input Leap, позволяющего использовать одну клавиатуру и мышь для управления несколькими компьютерами.
  • Редакция Fedora с рабочим столом KDE прекратила поддержку сеанса на основе протокола X11 в базовой поставке.
  • Улучшена поддержка окружений на базе Wayland в проприетарных драйверах NVIDIA.
  • Реализован драйвер, позволяющий использовать Wine в окружениях на базе протокола Wayland без применения XWayland и компонентов X11.
  • Сформирован выпуск композитного сервера Weston 13.0.
  • Для тестирования работы KDE, GNOME, Enlightenment, Wayfire, Mir, Xfce и Sway поверх Wayland выпускается специальный Live-дистрибутив Rebecca Black Linux.
  • В Linux-сборках Forefox по умолчанию включено использование композитного сервера Wayland вместо XWayland. Предоставлена возможность создания сборок, поддерживающих работу только в 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.





Release. Ссылка here.