Прошло больше года, и команда разработчиков представила очередной стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.23. Положительным моментом является то, что эта версия обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Подробности — под катом.

Что такое Wayland?

Это специфический протокол взаимодействия композитного сервера и зависимых приложений. Клиенты отрисовывают окна в выделенном буфере. Соответственно, эта информация поступает композитному серверу. А он, в свою очередь, комбинирует содержимое буферов отдельных приложений для формирования финального вывода с учётом ряда факторов, включая прозрачность окон и перекрытие.

В ряде случаев Wayland позволяет решить большое количество проблем с безопасностью Х11. Дело в том, что он изолирует как ввод, так и вывод для каждого окна. Не позволяет клиенту получить доступ к содержимому окна других клиентов. А также не позволяет перехватить связанные с другими окнами события ввода. На данный момент поддержка прямой работы с Wayland готова для библиотек GTK, Qt, SDL (начиная с выпуска 2.0.2), Clutter и EFL (Enlightenment Foundation Library). Начиная с Qt 5.4 в состав включён модуль QtWayland с реализацией компонентов для работы Qt-приложений в окружении композитного сервера Weston, развиваемого проектом Wayland.

Стоит отметить, что в рамках этого проекта развивается ещё один вариант композитного сервера. Так, в роли последнего может быть любой продукт, который поддерживает протокол Wayland. К примеру, сейчас идёт работа по обеспечению поддержки Wayland в KWin. Функциональность Weston можно расширять, добавляя плагины и дополнения. Пользовательские оболочки и расширенные функции управления окнами предлагается реализовывать в форме внешних бэкендов к Weston. Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland используется DDX-компонент XWayland (Device-Dependent X), похожий по организации работы на Xwin и Xquartz для платформ Win32 и macOS.

Ну хорошо, а что нового?

  • Для запросов, событий и перечислений теперь появилась возможность использования XML-атрибута "deprecated-since" для пометки устаревших элементов. Что касается запросов, то в данном контексте это сообщения, которые отправляются клиентом к серверу, события — сообщения, передаваемые от сервера к клиенту. Ну а перечисления — связанные с определённым именем наборы числовых значений, которыми манипулирует протокол.

  • В libwayland добавлен API, который предоставляет возможность для клиента определить максимальный размер внутреннего буфера соединений на стороне сервера. Базовый максимальный размер буфера выставляется через интерфейс wl_display, а новый API позволяет клиентам изменять его в привязке к каждому клиентскому соединению. C практической стороны изменение позволяет использовать буферы большего размера в специфичных Wayland-клиентах, таких как Xwayland, которым свойственна большая интенсивность событий ввода.

  • В утилиту wayland-scanner, предназначенную для генерации заголовочных файлов и кода на языке Си на основе XML-файлов с описанием протокола, добавлен режим "enum-header", включающий указание в заголовочных файлах только «перечислений».

  • В wayland-scanner обеспечена генерация проверочных функций (validator) для «перечислений» на стороне сервера.

  • Добавлен API для назначения очереди имени с целью упрощения последующей отладки.

  • Добавлены функции wl_client_get_user_data() и wl_client_set_user_data(), упрощающие прикрепление произвольных данных к клиенту.

  • Добавлен запрос wl_shm.release, позволяющий клиенту информировать сервер о прекращении использования разделяемого объекта, что позволяет серверу освободить связанную с ним память.

  • Добавлена поддержка платформы OpenBSD.

  • Начальная поддержка Wayland в среде рабочего стола Budgie.

  • Начальная поддержка Wayland в среде рабочего стола Cinnamon.

  • Почти завершено портирование рабочего стола MATE для Wayland.

  • Отдельно стоит выделить появление в KDE6 сеанса, который использует протокол Wayland. Также реализована поддержка расширений, позволяющих управлять цветом.

  • Добавлена поддержка Wayland в IDE IntelliJ, OpenJDK и 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.

Дополнительные подробности доступны здесь.

Комментарии (13)


  1. Cyber100
    05.06.2024 15:55
    +4

    внимание, вопрос: когда ОНО заработает на нвидии НОРМАЛЬНО, а не через одно место?


    1. zbot
      05.06.2024 15:55
      +4

      это скорее зависит от нвидии и ее проприетарных дров


      1. Cyber100
        05.06.2024 15:55

        значит, никогда.


      1. galanin
        05.06.2024 15:55

        Так вроде бы уже заработало на 555 драйверах. Во всяком случае на Gnome 46.2 у меня никаких проблем


    1. MountainGoat
      05.06.2024 15:55

      Ну если на Дебиане - то через 2 года.

      Нужны KDE 6.1, дрова 555 и свежайшее ядро.