Wayland (протокол сервера отображения)

редактировать

Wayland
Wayland Logo.svg
Weston, the reference implementation of a Wayland server. Weston, эталонная реализация сервера Wayland.
Оригинальный автор (ы) Кристиан Хогсберг
Разработчик (и) freedesktop.org и др.
Первоначальный выпуск30 сентября 2008 г.; 12 лет назад (30.09.2008)
Стабильный выпуск Wayland: 1.18, Weston: 8.0 / 11 февраля 2020 г.; 8 месяцев назад (2020-02-11)
Репозиторий Edit this at Wikidata
Написано наC
Операционная система официальная: Linux. неофициальная: NetBSD, FreeBSD, DragonFly BSD
Тип
Лицензия Лицензия MIT
Веб-сайтwayland.freedesktop.org

Wayland - это протокол связи, определяет связь между сервером отображения и его клиентами, а также реализацию этого протокола в библиотеке C. Сервер отображения, использующий протокол Wayland, называется компоновщиком Wayland, потому что он дополнительно выполняет задачу оконного менеджера композитинга.

Wayland разработан группой добровольцев, первоначально возглавляемой Кристианом Хогсбергом как бесплатный и проект с открытым исходным кодом, управляемый сообществом с целью замены X Window System современной, безопасной, более простой оконной системой в Linux и других Unix-подобных операционных системах. Исходный код проекта опубликован в соответствии с условиями лицензии MIT, разрешающей лицензии на свободное ПО.

В рамках своих усилий проект Wayland также разрабатывает эталонную реализацию композитора Wayland под названием Weston.

Содержание
  • 1 Обзор
  • 2 Архитектура программного обеспечения
    • 2.1 Архитектура протокола
    • 2.2 Обзор протокола
      • 2.2.1 Основные интерфейсы Wayland
      • 2.2.2 Интерфейсы расширения Wayland
    • 2.3 Протоколы расширения к основному протоколу
      • 2.3.1 Протокол XDG-Shell
      • 2.3.2 Протокол IVI-Shell
    • 2.4 Модель визуализации
  • 3 Сравнение с другими оконными системами
    • 3.1 Различия между Wayland и X
    • 3.2 Совместимость с X
  • 4 Композиторы Wayland
    • 4.1 Weston
      • 4.1.1 Maynard
    • 4.2 libinput
    • 4.3 Модуль безопасности Wayland
  • 5 Принятие
    • 5.1 Дистрибутивы Linux для настольных ПК
    • 5.2 Поддержка набора инструментов
    • 5.3 Среды рабочего стола
    • 5.4 Другое программное обеспечение
    • 5.5 Мобильное и встроенное оборудование
  • 6 История
    • 6.1 Выпуски
  • 7 См. Также
  • 8 Ссылки
  • 9 Внешние ссылки
Обзор
  1. Модуль evdev ядра Linux получает событие и отправляет его Композитор Wayland.
  2. Композитор Wayland просматривает свой граф сцены, чтобы определить, какое окно должно принять событие. Граф сцены соответствует тому, что находится на экране, и композитор Wayland понимает преобразования, которые он мог применить к элементам в графе сцены. Таким образом, композитор Wayland может выбрать правое окно и преобразовать координаты экрана в локальные координаты окна, применив обратные преобразования. Типы преобразования, которые могут быть применены к окну, ограничены только тем, что может сделать композитор, если он может вычислить обратное преобразование для входных событий.
  3. Как и в случае X, когда клиент получает событие, в ответ обновляет пользовательский интерфейс. Но в случае Wayland рендеринг выполняется клиентом через EGL, и клиент просто отправляет запрос композитору, чтобы указать регион, который был обновлен.
  4. Композитор Wayland собирает повреждения запросы от своих клиентов, а затем перекомпоновывает экран. Затем наборщик может напрямую выдать ioctl, чтобы запланировать перелистывание страниц с помощью KMS.

. Начиная примерно с 2010 года, графика рабочего стола Linux перестала иметь "кучу интерфейсов рендеринга... все разговаривают с X-сервером, который находится в центре вселенной «для установки ядра Linux и его компонентов (т.е. Direct Rendering Infrastructure (DRI), Direct Rendering Manager (DRM) ) «посередине», с «оконными системами, такими как X и Wayland... в углу». Это будет «значительно упрощенная графическая система, предлагающая большую гибкость и лучшую производительность».

Кристиан Хогсберг мог бы добавить расширение к X, как это делали многие недавние проекты, но предпочел » [вытолкнуть] X из горячего пути между клиентами и оборудованием "по причинам, объясненным в FAQ проекта:

Что изменилось сейчас, так это то, что большая часть инфраструктуры перенесена с X-сервера в ядро ​​( управление памятью, планирование команд, установка режима ) или библиотеки (cairo, pixman, freetype, fontconfig, pango и т. д.), и в процессе центрального сервера должно произойти очень немногое.... [X-сервер имеет] огромное количество функций, которые вы должны поддерживать, чтобы утверждать, что он говорит по X-протоколу, но никто никогда не будет использовать это.... Это включает в себя кодовые таблицы, растеризацию и кэширование глифов, XLFD (серьезно, XLFD!) И весь основной API рендеринга, который позволяет рисовать пунктирные линии, многоугольники, широкие дуги и многое другое. графические примитивы в стиле 1980-х. Для многих вещей нам удалось сохранить современный сервер X.org, добавив такие расширения, как XRandR, XRender и COMPOSITE... С Wayland мы может переместить X-сервер и все его унаследованные технологии на дополнительный путь кода. Достижение того момента, когда X-сервер является вариантом совместимости вместо базовой системы рендеринга, займет некоторое время, но мы никогда этого не добьемся, если [мы] не планируем это.

Wayland состоит из протокола и эталонная реализация с именем Weston. В рамках проекта также разрабатываются версии GTK и Qt, которые отрисовываются в Wayland, а не в X. Ожидается, что большинство приложений получат поддержку Wayland через одну из этих библиотек без модификации приложения..

Первоначальные версии Wayland не обеспечивали прозрачности сети, хотя Хёгсберг отметил в 2010 году, что прозрачность сети возможна. Это было предпринято в качестве проекта Google Summer of Code в 2011 году, но безуспешно. Адам Джексон предусмотрел предоставление удаленного доступа к приложению Wayland путем «очистки пикселей» (например, VNC ) или получения от него «потока команд рендеринга» по сети (как в RDP, SPICE или X11 ). По состоянию на начало 2013 года Хогсберг экспериментирует с прозрачностью сети, используя прокси-сервер Wayland, который отправляет сжатые изображения настоящему композитору. В августе 2017 года в GNOME была впервые реализована такая реализация VNC-сервера с парсингом пикселей в Wayland.

Архитектура программного обеспечения

Архитектура протокола

В архитектуре протокола Wayland клиент и композитор обмениваются данными через протокол Wayland с использованием эталонных библиотек реализации.

Протокол Wayland следует модели клиент-сервер, в которой клиенты - это графические приложения, запрашивающие отображение буферов пикселей на экране, а сервер (композитор) - поставщик услуг, контролирующий отображение этих буферов.

Эталонная реализация Wayland была разработана как двухуровневый протокол:

  • низкоуровневый или проводной протокол, который обрабатывает межпроцессное взаимодействие между двумя участниками обрабатывает ‍ - «клиент и составитель» - и упорядочивает данных, которыми они обмениваются. Этот уровень основан на сообщениях и обычно реализуется с помощью IPC-сервисов ядра, в частности сокетов домена Unix в случае Linux и Unix-подобных операционных систем. 135>
  • Построенный на нем высокоуровневый уровень, который обрабатывает информацию, которой клиент и наборщик должны обмениваться для реализации основных функций оконной системы. Этот уровень реализован как «асинхронный объектно-ориентированный протокол».

В то время как низкоуровневый уровень был написан вручную на C, высокоуровневый уровень автоматически генерируется из описания элементов протокол, хранящийся в формате XML. Каждый раз, когда описание протокола этого XML-файла изменяется, исходный код C, реализующий такой протокол, может быть регенерирован для включения новых изменений, что обеспечивает очень гибкий, расширяемый и защищенный от ошибок протокол.

Эталонная реализация протокола Wayland разделена на две библиотеки : библиотеку для использования клиентами Wayland под названием libwayland-clientи библиотеку, которая будет использоваться Wayland Композиторы называются libwayland-server.

Обзор протокола

Протокол Wayland описывается как «асинхронный объектно-ориентированный протокол». Объектно-ориентированный означает, что услуги, предлагаемые композитором, представлены в виде серии объектов, живущих на одном и том же композиторе. Каждый объект реализует интерфейс, который имеет имя, несколько методов (называемых запросами), а также несколько связанных событий. Каждый запрос и событие имеет ноль или более аргументов, каждый из которых имеет имя и тип данных . Протокол является асинхронным в том смысле, что запросам не нужно ждать синхронизированных ответов или ACK, что позволяет избежать времени задержки приема-передачи и повысить производительность.

Клиенты Wayland могут сделать запрос (вызов метода) для некоторого объекта, если интерфейс объекта поддерживает этот запрос. Клиент также должен предоставить необходимые данные для аргументов такого запроса. Таким образом клиенты запрашивают услуги у наборщика. Компоновщик, в свою очередь, отправляет информацию обратно клиенту, заставляя объект генерировать события (возможно, также с аргументами). Эти события могут быть отправлены композитором в ответ на определенный запрос или асинхронно, в зависимости от возникновения внутренних событий (например, от устройства ввода) или изменений состояния. Состояния ошибки также сигнализируются как события композитором.

Чтобы клиент мог сделать запрос к объекту, ему сначала необходимо сообщить серверу идентификационный номер, который он будет использовать для идентификации этого объекта. В композиторе есть два типа объектов: глобальные объекты и неглобальные объекты. Композитор объявляет глобальные объекты клиентам при их создании (а также при их уничтожении), в то время как неглобальные объекты обычно создаются другими объектами, которые уже существуют как часть их функциональности.

интерфейсы, их запросы и события являются основными элементами, определяющими протокол Wayland. Каждая версия протокола включает набор интерфейсов, а также их запросы и события, которые, как ожидается, будут в любом композиторе Wayland. При желании композитор Wayland может определять и реализовывать свои собственные интерфейсы, поддерживающие новые запросы и события, тем самым расширяя функциональность за пределы основного протокола. Чтобы облегчить внесение изменений в протокол, каждый интерфейс помимо имени содержит атрибут «номер версии»; этот атрибут позволяет различать варианты одного и того же интерфейса. Каждый композитор Wayland показывает не только доступные интерфейсы, но и поддерживаемые версии этих интерфейсов.

Основные интерфейсы Wayland

Интерфейсы текущей версии протокола Wayland определены в файле protocol /wayland.xml исходного кода Wayland. Это файл XML, в котором перечислены существующие интерфейсы в текущей версии, а также их запросы, события и другие атрибуты. Этот набор интерфейсов - минимум, необходимый для реализации любым композитором Wayland.

Некоторые из основных интерфейсов протокола Wayland:

  • wl_display - основной глобальный объект, специальный объект для инкапсуляции самого протокола Wayland
  • wl_registry - объект глобального реестра, в котором композитор регистрирует все глобальные объекты, которые он хочет сделать доступными для всех клиентов
  • wl_compositor - объект, который представляет композитор и отвечает за объединение различных поверхностей в один вывод
  • wl_surface - объект, представляющий прямоугольную область на экране, определяемую местоположением, размером и содержанием пикселей
  • wl_buffer - объект, который при присоединении к объекту wl_surface предоставляет его отображаемое содержимое
  • wl_output - объект, представляющий отображаемую область экрана
  • wl_pointer, wl_keyboard, wl_touch - объекты, представляющие различные устройства ввода, такие как указатели или клавиатуры
  • wl_seat - объект, представляющий место (набор устройств ввода / вывода) в multiseat co nfigurations

Типичный сеанс клиента Wayland начинается с открытия соединения с композитором с помощью объекта wl_display. Это специальный локальный объект, который представляет соединение и не находится на сервере. Используя свой интерфейс, клиент может запросить глобальный объект wl_registry у композитора, в котором находятся все имена глобальных объектов, и связать те, которые интересуют клиента. Обычно клиент связывает как минимум объект wl_compositor, откуда он будет запрашивать один или дополнительные объекты wl_surface для отображения вывода приложения на дисплей.

Интерфейсы расширения Wayland

Композитор Wayland может определять и экспортировать свои собственные дополнительные интерфейсы. Эта функция используется для расширения протокола за пределы базовой функциональности, обеспечиваемой базовыми интерфейсами, и стала стандартным способом реализации расширений протокола Wayland. Некоторые композиторы могут добавлять настраиваемые интерфейсы для предоставления специализированных или уникальных функций. Эталонный композитор Wayland, Weston, использовал их для реализации новых экспериментальных интерфейсов в качестве испытательной площадки для новых концепций и идей, некоторые из которых позже стали частью основного протокола (например, интерфейс wl_subsurface, добавленный в Wayland 1.4).

Протоколы расширения для основного протокола

Протокол XDG-Shell

Протокол XDG-Shell (см. freedesktop.org для XDG) - это расширенный способ управлять поверхностями под композиторы Wayland (не только Weston). Традиционный способ управления поверхностями (развертывание, свертывание, полноэкранный режим и т. Д.) Заключается в использовании функций wl_shell _ * (), которые являются частью основного протокола Wayland и находятся в libwayland-client. Напротив, реализация протокола xdg-shell должна быть предоставлена ​​композитором Wayland. Таким образом, вы найдете заголовок xdg-shell-client-protocol.h в дереве исходных текстов Weston. Предполагается, что каждый композитор Wayland имеет собственную реализацию.

По состоянию на июнь 2014 года протокол XDG-Shell не поддерживался версией и все еще подвержен изменениям.

xdg_shell - это протокол, предназначенный для замены wl_shell в долгосрочной перспективе, но он не будет частью основного протокола Wayland. Он начинается как нестабильный API, предназначенный для использования сначала в качестве места разработки, и после того, как функции определены в соответствии с требованиями нескольких оболочек рабочего стола, его можно, наконец, сделать стабильным. Он предоставляет в основном два новых интерфейса: xdg_surface и xdg_popup. Интерфейс xdg_surface реализует окно в стиле рабочего стола, которое можно перемещать, изменять размер, увеличивать и т. Д.; он предоставляет запрос на создание дочерних / родительских отношений. Интерфейс xdg_popup реализует всплывающее меню / меню в стиле рабочего стола; xdg_popup всегда является переходным для другой поверхности, а также имеет неявный захват.

Протокол IVI-Shell

IVI-Shell является расширением основного протокола Wayland, нацеленным на в автомобиле информационно-развлекательные устройства (IVI).

Модель рендеринга

Композитор Wayland и его клиенты используют EGL для рисования непосредственно в буфер кадра ; Сервер X.Org с XWayland и Glamour.

Протокол Wayland не включает API рендеринга. Вместо этого Wayland следует модели прямого рендеринга, в которой клиент должен рендерить содержимое окна в буфер, доступный для совместного использования с композитором. Для этой цели клиент может выбрать выполнение рендеринга самостоятельно, использовать библиотеку рендеринга, такую ​​как Cairo или OpenGL, или полагаться на механизм рендеринга библиотек виджетов высокого уровня с Поддержка Wayland, например Qt или GTK. Клиент также может дополнительно использовать другие специализированные библиотеки для выполнения определенных задач, таких как Freetype для рендеринга шрифтов.

Результирующий буфер с визуализированным содержимым окна сохраняется в объекте wl_buffer. Внутренний тип этого объекта зависит от реализации. Единственное требование - данные содержимого должны быть доступны для совместного использования клиенту и композитору. Если клиент использует программный (ЦП) рендерер и результат сохраняется в системной памяти, то клиент и композитор могут использовать совместно используемую память для реализации взаимодействия буфера без дополнительных копий. Протокол Wayland уже изначально предоставляет этот вид разделяемого буфера памяти через интерфейсы wl_shm и wl_shm_pool. Недостатком этого метода является то, что композитору может потребоваться дополнительная работа (обычно для копирования общих данных в графический процессор) для их отображения, что приводит к снижению производительности графики.

Наиболее типичный случай, когда клиент выполняет рендеринг непосредственно в буфер видеопамяти, используя API с аппаратным (GPU) ускорением, например OpenGL, OpenGL ES или Вулкан. Клиент и композитор могут совместно использовать этот буфер пространства GPU, используя специальный обработчик для ссылки на него. Этот метод позволяет композитору избежать дополнительного копирования данных через себя методом «клиент-композитор-графический процессор», что приводит к более высокой производительности графики, и поэтому является предпочтительным. Компоновщик может дополнительно оптимизировать композицию финальной сцены, которая будет отображаться на дисплее, используя тот же API аппаратного ускорения, что и клиент API.

Когда рендеринг завершен в совместно используемом буфере, клиент Wayland должен проинструктировать композитора представить рендеринг содержимого буфера на дисплее. Для этого клиент привязывает буферный объект, в котором хранится визуализированное содержимое, к поверхностному объекту и отправляет на поверхность запрос «фиксации», передавая эффективное управление буфером композитору. Затем клиент ожидает, пока композитор освободит буфер (о чем свидетельствует событие), если он хочет повторно использовать буфер для визуализации другого кадра, или он может использовать другой буфер для визуализации нового кадра, и, когда визуализация завершена, привязать этот новый буфер на поверхность и зафиксирует его содержимое. Процедура, используемая для рендеринга, включая количество задействованных буферов и их управление, полностью находится под контролем клиента.

Сравнение с другими оконными системами

Различия между Wayland и X

Существует несколько различий между Wayland и X в отношении производительности, удобства обслуживания кода и безопасности:

Архитектура
Менеджер композиции - это отдельная дополнительная функция в X, в то время как Wayland объединяет сервер дисплея и композитор как единую функцию. Кроме того, он включает в себя некоторые задачи оконного менеджера, который в X является отдельным процессом на стороне клиента.
Компоновка
Композиция является необязательной в X, но обязательной в Wayland. Композиция в X "активна"; то есть композитор должен получить все данные пикселей, что приводит к задержке. В Wayland композитинг является «пассивным», что означает, что композитор получает пиксельные данные непосредственно от клиентов.
Рендеринг
Сам X-сервер может выполнять рендеринг, хотя ему также могут быть даны инструкции для отображения рендеринга окно, отправленное клиентом. Напротив, Wayland не предоставляет никаких API для рендеринга, но делегирует клиентам такие задачи (включая рендеринг шрифтов, виджетов и т. Д.). Декорации окон могут отображаться на стороне клиента (например, с помощью набора графических инструментов) или на стороне сервера (композитором).
Безопасность
Wayland изолирует ввод и вывод каждого окна, обеспечивая конфиденциальность, целостность и доступность в обоих случаях; в оригинальном дизайне X отсутствуют эти важные функции безопасности, хотя были разработаны некоторые расширения, пытающиеся смягчить их. Кроме того, поскольку подавляющее большинство кода выполняется на клиенте, меньше кода необходимо запускать с привилегиями root, что повышает безопасность, хотя несколько популярных дистрибутивов Linux теперь позволяют запускать X без привилегий root.
Межпроцессное взаимодействие
X-сервер обеспечивает базовый метод связи между X-клиентами, позже расширенный соглашениями ICCCM. Это взаимодействие X-клиент-клиент используется оконными менеджерами, а также для реализации X-сессий, выборок и перетаскивания и других функций. Основной протокол Wayland вообще не поддерживает связь между клиентами Wayland, и соответствующие функции (при необходимости) должны быть реализованы с помощью среды рабочего стола (например, KDE или GNOME) или третьей стороной (например,, используя собственный IPC базовой операционной системы).
Сеть
Система X Window представляет собой архитектуру, которая была разработана по своей сути для работы сеть. Wayland сама по себе не обеспечивает прозрачности сети; однако наборщик может реализовать любой протокол удаленного рабочего стола для обеспечения удаленного отображения. Кроме того, проводятся исследования потоковой передачи и сжатия изображений Wayland, которые обеспечат доступ к удаленному буферу кадров, аналогичный доступу к VNC.

Совместимость с X

Снимок экрана, показывающий xwayland

XWayland, является X Server работает как клиент Wayland и, таким образом, может отображать собственные клиентские приложения X11 в среде композитора Wayland. Это похоже на то, как XQuartz запускает X-приложения в собственной оконной системе macOS. Цель XWayland - облегчить переход от системы X Window к средам Wayland, предоставив тем временем возможность запускать непортированные приложения. XWayland был встроен в X.Org Server версии 1.16.

Наборы инструментов для виджетов, такие как Qt 5 и GTK 3, могут переключать свой графический интерфейс обратно. конец во время выполнения, позволяя пользователям выбирать в время загрузки, хотят ли они запускать приложение через X или через Wayland. Qt 5 предоставляет для этого опцию командной строки -platform, тогда как GTK 3 позволяет пользователям выбирать желаемую внутреннюю часть GDK, устанавливая GDK_BACKENDПеременная среды Unix.

Компоновщики Wayland
Типичные элементы окна. Ни Wayland, ни X11 не указывают, какое программное обеспечение отвечает за рендеринг оформления окна. Weston требует, чтобы они были нарисованы клиентом, но KWin реализует оформление на стороне сервера.

Серверы отображения, реализующие протокол сервера отображения Wayland, также называются композиторами Wayland, потому что они дополнительно выполняют задача оконного менеджера композитинга.

  • Weston - эталонная реализация композитора Wayland; Weston реализует декорации на стороне клиента
  • Lipstick - мобильная графическая оболочка фреймворк, реализующий композитор Wayland; он используется в Sailfish OS, Nemo Mobile и AsteroidOS
  • Enlightenment заявлено о полной поддержке Wayland с версии 0.20, но в настоящее время ведутся работы по созданию полноценного Wayland композитор
  • KWin почти полностью поддерживает Wayland по состоянию на 2018 г.
  • Mutter поддерживает отдельную ветку для интеграции Wayland для GNOME 3.9 (в сентябре 2013 г.)
  • Clayland - простой пример композитора Wayland, использующего Clutter
  • - библиотеку композитора Wayland, которая позволяет приложениям создавать свои собственные дисплеи Wayland, что позволяет вкладывать и встраивать сторонние приложения
  • - модульная реализация Wayland, которая функционирует как база для других композиторов, в первую очередь Sway
  • Sway - мозаичный композитор Wayland и замена оконного менеджера i3 для X11

Weston

Weston, работающего на postmarketOS

Weston - эталонная реализация композитора Wayland, также разработанная в рамках проекта Wayland. Он написан на C и опубликован под лицензией MIT. Weston официально поддерживает только операционную систему Linux из-за зависимости Weston от некоторых функций ядра Linux, таких как настройка режима ядра, Graphics Execution Manager (GEM) и udev, которые не были реализованы в других Unix-подобных операционных системах. При работе в Linux обработка входного оборудования зависит от evdev, а обработка буферов зависит от Generic Buffer Management (GBM). Однако в 2013 году был анонсирован прототип порта Weston на FreeBSD.

Weston поддерживает High-bandwidth Digital Content Protection (HDCP).

Weston полагается на GEM для совместного использования буферов приложений между композитором и приложениями. Он содержит подключаемую систему «оболочек» для общих функций рабочего стола, таких как док-станции и панели. Клиенты несут ответственность за прорисовку рамок окон и их украшения. Для рендеринга Weston может использовать OpenGL ES или библиотеку pixman для выполнения программного рендеринга. Полная реализация OpenGL не используется, поскольку в большинстве современных систем установка полных библиотек OpenGL также приведет к установке GLX и других поддерживающих библиотек X Window System в качестве зависимостей.

Интерфейс удаленного доступа для Weston был предложен в октябре 2013 г. сотрудником RealVNC.

Maynard

Рабочий стол Maynard в январе 2017 г.

Maynard - это графическая оболочка и была написана как надстройка для Weston, так же как GNOME Shell была написана как надстройка к Mutter.

libinput

libinput была создан для объединения стека ввода для нескольких композиторов Wayland.

Код Weston для работы с устройствами ввода (клавиатуры, указатели, сенсорные экраны и т. д.) был разделен на отдельную библиотеку под названием libinput, поддержка которой была впервые объединена в Weston 1.5.

Libinput обрабатывает устройства ввода для нескольких композиторов Wayland, а также предоставляет общий драйвер ввода X.Org Server. Его цель - предоставить одну реализацию для нескольких композиторов Wayland с общим способом обработки событий ввода, минимизируя при этом количество настраиваемых композиторов кода ввода, которые необходимо включать. libinput обеспечивает обнаружение устройства (через udev ), обработку устройства, обработку событий устройства ввода и абстракцию.

Версия 1.0 libinput последовала за версией 0.21 и включала поддержку планшетов, наборов кнопок и жестов сенсорной панели. Эта версия будет поддерживать стабильный API / ABI.

Поскольку GNOME / GTK и KDE Frameworks 5 внесли необходимые изменения, Fedora 22 заменит драйверы evdev и Synaptics от X.Org на libinput.

В версии 1.16 сервер X.Org получил поддержку библиотеки libinput в форме оболочки под названием xf86-input-libinput.

Модуль безопасности Wayland

Модуль безопасности Wayland - это предложение, которое напоминает интерфейс Linux Security Module, который есть в ядре Linux.

Некоторые приложения (особенно связанные с доступность ) требуют привилегированных возможностей, которые должны работать с различными композиторами Wayland. В настоящее время приложения в Wayland, как правило, не могут выполнять какие-либо важные задачи, такие как создание снимков экрана или внедрение событий ввода. Разработчики Wayland активно ищут возможные способы безопасной работы с привилегированными клиентами, а затем проектируют для них привилегированные интерфейсы.

Модуль безопасности Wayland - это способ делегировать решения по безопасности в композиторе централизованному механизму принятия решений.

Принятие

Протокол Wayland разработан так, чтобы быть простым, так что дополнительные протоколы и интерфейсы должны быть определены и реализованы для достижения целостной оконной системы. По состоянию на июль 2014 года эти дополнительные интерфейсы находились в стадии разработки. Таким образом, хотя наборы инструментов уже полностью поддерживают Wayland, разработчики графических оболочек сотрудничают с разработчиками Wayland, создавая необходимые дополнительные интерфейсы.

Дистрибутивы Linux для настольных ПК

По состоянию на 2020 год большинство дистрибутивов Linux поддерживают Wayland из коробки, некоторые примечательные примеры:

  • Fedora, начиная с версии 25, использует Wayland для GNOME по умолчанию 3.22 сеанс рабочего стола с X.Org в качестве запасного варианта, если графический драйвер не может поддерживать Wayland.
  • Ubuntu поставляет Wayland по умолчанию в Ubuntu 17.10 (Artful Aardvark). Ubuntu вернулась к X.Org для Ubuntu 18.04 LTS, поскольку Wayland по-прежнему имеет проблемы с совместным использованием экрана и приложениями удаленного рабочего стола, а также не восстанавливается после сбоев диспетчера окон. В выпуске Ubuntu 20.04 LTS Xorg по-прежнему использовался по умолчанию.
  • Red Hat Enterprise Linux поставляет Wayland в качестве сеанса по умолчанию в версии 8.
  • Debian отправляет Wayland в качестве сеанса по умолчанию для GNOME с тех пор. версия 10.
  • Slackware Linux включил Wayland 20 февраля 2020 года в разрабатываемую версию -current, которая в конечном итоге станет версией 15.0.
  • PureOS включила Wayland 20 февраля 2020 года для разработки version, -current, которая в конечном итоге станет версией 15.0.

Известный ранний последователь:

  • RebeccaBlackOS - live USB дистрибутив Linux на основе Debian, который позволяет удобно опробовать настоящий рабочий стол Wayland без необходимости вносить какие-либо изменения в основную операционную систему компьютера. Он использовался с 2012 года для демонстрации Wayland.

Поддержка Toolkit

Toolkit, поддерживающий Wayland, включает следующее:

  • Clutter полностью поддерживает Wayland.
  • EFL имеет полную поддержку Wayland, за исключением выбора.
  • GTK 3.20 имеет полную поддержку Wayland.
  • Qt 5 имеет полную поддержку Wayland и может использоваться для написания как композиторов Wayland, так и клиентов Wayland.
  • SDL поддержка Wayland дебютировала с выпуском 2.0.2 и была включена по умолчанию с версии 2.0.4.
  • GLFW 3.2 имеет поддержку Wayland.
  • FreeGLUT имеет начальную поддержку Wayland.

Рабочий стол среды

Рабочие среды, переносимые из X в Wayland, включают GNOME, KDE Plasma 5 и Enlightenment.

В ноябре 2015 года Enlightenment e20 был анонсирован при полной поддержке Wayland. GNOME 3.20 была первой версией, в которой была полнофункциональная сессия Wayland. GNOME 3.22 включает значительно улучшенную поддержку Wayland в GTK, Mutter и GNOME Shell. GNOME 3.24 поставлял поддержку проприетарных драйверов NVidia под Wayland.

Поддержка Wayland для KDE Plasma была отложена до выпуска Plasma 5, хотя ранее KWin 4.11 получил экспериментальную поддержку Wayland. Версия 5.4 Plasma была первой с сессией Wayland. В течение 2020 года Klipper был перенесен на Wayland, а следующая версия 5.20 в октябре 2020 года имеет целью улучшить трансляцию экрана и запись. По крайней мере, одна основная часть KDE: sddm еще не перенесена на Wayland по состоянию на сентябрь 2020 года.

Другое программное обеспечение

Другое программное обеспечение, поддерживающее Wayland, включает следующее:

  • Intelligent Input Bus работает над поддержкой Wayland, он может быть готов для Fedora 22.
  • RealVNC опубликовал предварительную версию Wayland для разработчиков в июле 2014 года.
  • Maliit - это метод ввода фреймворк который работает под Wayland.
  • kmscon поддерживает Wayland с wlterm.
  • Mesa имеет интегрированную поддержку Wayland.
  • Eclipse был запущен на Wayland во время GSoC -Project в 2014 году.
  • Vulkan WSI (интерфейс оконной системы) - это набор вызовов API, служащих той же цели, что и EGL для OpenGL ES или GLX для OpenGL. Vulkan WSI с первого дня включает поддержку Wayland: VK_USE_PLATFORM_WAYLAND_KHR. Клиенты Vulkan могут работать на немодифицированных серверах Wayland, включая Weston, GENIVI LayerManager, Mutter / GNOME Shell, Enlightenment и другие. WSI позволяет приложениям обнаруживать различные графические процессоры в системе и отображать результаты рендеринга графического процессора в оконной системе.
  • SPURV, уровень совместимости для приложений Android для запуска в дистрибутивах GNU / Linux с использованием Wayland

Мобильное и встроенное оборудование

Мобильное и встроенное оборудование, поддерживающее Wayland, включает следующее:

History
Wayland использует прямой рендеринг поверх EGL.

Кристиан Хогсберг, разработчик графики Linux и X.Org разработчик, который ранее работал над AIGLX и DRI2, начал Wayland в качестве свободного времени в 2008 году, работая в Red Hat. Его заявленной целью была система, в которой «каждый кадр идеален, под этим я подразумеваю, что приложения смогут достаточно контролировать рендеринг, чтобы мы никогда не увидели разрывов, задержек, перерисовки или мерцания». Хогсберг ехал через город Вэйланд, штат Массачусетс, когда основные концепции «кристаллизовались», отсюда и название.

В октябре 2010 года Wayland стал freedesktop.org проект. В рамках миграции прежняя Группа Google была заменена списком рассылки wayland-devel в качестве центральной точки обсуждения и развития проекта.

Клиентские и серверные библиотеки Wayland были первоначально выпущены под лицензией MIT, в то время как эталонный композитор Weston и некоторые примеры клиентов использовали Стандартную общественную лицензию GNU версии 2. Позже весь код GPL был повторно лицензирован под лицензией MIT, «чтобы упростить перенос кода между эталонной реализацией и реальными библиотеками». В 2015 году было обнаружено, что текст лицензии, используемый Wayland, был немного другой и более старой версией лицензии MIT, а текст лицензии был обновлен до текущей версии, используемой проектом X.Org (известный как Лицензия MIT Expat ).

Wayland работает со всеми Mesa-совместимыми драйверами с поддержкой DRI2, а также с драйверами Android через проект Hybris.

Разработчики Wayland в основном являются текущими разработчиками X.Org Server.

Релизы

Основные релизы Wayland и Weston
ВерсияДатаОсновные характеристики
WaylandWeston
Старая версия, больше не м aintained: 0.859 February 2012First release.
Old version, no longer maintained: 0.9524 July 2012Began API stabilization.
Old version, no longer maintained: 1.022 October 2012Stable wayland-client API.
Old version, no longer maintained: 1.115 April 2013Software rendering. FBDEV, RDP backends.
Old version, no longer maintained: 1.212 July 2013Stable wayland-server API.Color management. Subsurfaces. Raspberry Pi backend.
Old version, no longer maintained: 1.311 October 2013More pixel formats. Support for language bindings.Android driver support via libhybris.
Old version, no longer maintained: 1.423 January 2014New wl_subcompositor and wl_subsurface interfaces.Multiple framebuffer formats. logind support for rootless Weston.
Old version, no longer maintained: 1.520 May 2014libinput. Fullscreen shell.
Old version, no longer maintained: 1.619 September 2014libinput by default.
Old version, no longer maintained: 1.714 February 2015Support for the Wayland presentation extension and for surface roles. IVI shell protocol.
Old version, no longer maintained: 1.82 June 2015Separated headers for core and generated protocol.Repaint scheduling. Named outputs. Output transformations. Surface-shooting API.
Old version, no longer maintained: 1.921 September 2015Updated license.Updated license. New test framework. Triple-head DRM compositor. linux_dmabuf extension.
Old version, no longer maintained: 1.1017 February 2016Drag-and-drop functionality, grouped pointer events.Video 4 Linux 2, touch input, debugging improvements.
Old version, no longer maintained: 1.111 June 2016New backup loading routine, new setup logic.Proxy wrappers, shared memory changes, Doxygen-generated HTML docs.
Old version, no longer maintained: 1.1221 September 2016Debugging support improved.libweston and libweston-desktop. Pointer locking and confinement. Relative pointer support.
Old version, no longer maintained: 1.1324 February 2017The ABI of Weston has been changed, thus the new version was named 2.0.0 rather than 1.13.0.
Old version, no longer maintained: 1.148 August 2017Weston 3.0.0 was released at the same time.
Old version, no longer maintained: 1.159 April 2018Weston 4.0.0 was released at the same time.
Old version, no longer maintained: 1.1624 August 2018Weston 5.0.0 was released at the same time.
Old version, no longer maintained: 1.1720 March 2019Weston 6.0.0 was released at the same time.
Current stable version: 1.182 August 2019Weston 7.0.0 was released one month later.
Legend:Old versionOlder version, still maintainedLatest versionLatest preview versionFuture release
See also
  • Free and open-source software portal
References
External links
Последняя правка сделана 2021-06-20 09:59:03
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте