Доступен 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-сборках Firefox по умолчанию включено использование композитного сервера 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.

0_1464763723.png0_1464763699.png



Источник: http://www.opennet.ru/opennews/art.shtml? num=61281

© OpenNet