После более года разработки представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек 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.