Русская Википедия:Wayland

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Карточка программы Wayland — протокол для организации графического сервера в Linux и других UNIX-подобных операционных системах. Разработка Wayland была начата Кристианом Хогсбергом (Шаблон:Lang-da), на тот момент сотрудником Red Hat, ныне членом Центра открытых технологий Intel[1]. Wayland является свободным ПО[2][3][4]. Название происходит от города Вэйланд, когда Хогсберг ехал через этот город, ему пришёл в голову концепт системы[5].

Основные принципы

Файл:Wayland display server protocol.svg
The Wayland display server protocol relys on EGL
Файл:Linux graphics drivers DRI Wayland.svg
Шаблон:Iw

По мнению разработчиков, Wayland является «работой над ошибками» X.org, которые накопились за четыре десятилетия его развития. Кардинальное отличие от X.org заключается в том, что Wayland лишь управляет буферами (плоскостями) окон и возлагает всю отрисовку их содержимого на инструментальные пакеты (GTK, Qt и так далее). API рисования (drawing API) полностью отсутствует. Все версии протокола строго определены, а сама система определения версий продумана. У X.org есть серьёзная проблема с версиями разных расширений, часто перекрещивавшимися или дополняющими, вместо того чтобы быть самодостаточными и исключающими. Функцию композиции буферов осуществляет референтный композитный менеджер (менеджер-композитор) Weston, использующий как OpenGL ES, так и программную отрисовку. В состав Wayland также входит унифицированный протокол устройств ввода, предоставляющий одну виртуальную клавиатуру, одну виртуальную мышь и один экранно-сенсорный интерфейс — разделяемые всеми приложениями. Wayland знает о состояниях устройств ввода и способен запоминать их. (X.org напротив не сохраняет состояния устройств (stateless-протокол), но может быть настроен через файлы конфигурации.)

О Wayland его создатель отзывается так: Шаблон:Начало цитаты Wayland — новый графический сервер, который выполняет только крошечную часть функций Х, которые мы действительно используем, когда запускаем композитный рабочий стол. Wayland, по сути, — буферный менеджер (подобно DRI2 для X.org), обработчик входных данных. Весь рендеринг выполняется на клиентской стороне — так, как сегодня работает OpenGL, а задание режимов и другие аппаратные установки выполняются в ядре. Такой подход значительно упрощает организацию сервера. Шаблон:Конец цитаты

Wayland использует уже существующие в ядре Linux технологии, такие как Kernel mode-setting (KMS), Direct Rendering Manager (DRM) и Graphics Execution Manager (GEM).

Weston

Weston — это эталонная реализация композитного менеджера Wayland. Написан на языке Си, сначала был опубликован под лицензией GPLv2, позже вышел под MIT. Weston изначально создавался под API ядра Linux, поэтому официально поддерживает работу только с ядром Linux из-за зависимости от KMS, GEM и udev.

Weston использует GEM для обмена буферов между графическим сервером и приложениями. Для рендеринга может использовать OpenGL, cairo и pixman[6].

Maynard

Maynard — графическая оболочка, которая была создана как плагин к Weston, аналогично тому, как GNOME Shell был создан как плагин к Mutter. Изначально Maynard проектировался для Raspberry Pi как легковесная графическая оболочка, поскольку в то время (2014 год) легковесные окружения рабочего стола, такие как LXDE, не поддерживали Wayland, а функциональные окружения типа GNOME и KDE были слишком ресурсоёмкими.[7] Проект не ограничен платформой Raspberry Pi и может использоваться на обычных рабочих станциях.[8] Оболочка отличается низким потреблением ресурсов, высокой производительностью, качественным оформлением и легковесностью.

Использование

Марк Шаттлворт анонсировал в своём блоге, что Ubuntu будет использовать Wayland вместо X.org для своей среды рабочего стола Unity[9]. Однако 4 марта 2013 года разработчики из Canonical приняли решение написать собственный графический сервер, получивший название Mir[10]. 5 апреля 2017 года они отказались от Mir и Unity в пользу Wayland и GNOME[11].

В операционной системе Fedora начиная с версии 35, по умолчанию используется окружение рабочего стола GNOME на базе Wayland.

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

Был разработан xwayland[12], который позволяет работать X11-приложениям поверх Wayland. Аналогично X.org приложения запускаются и под нативным окружением Mac OS X.

Релизы

Основные релизы Wayland/Weston[13]
Версия Дата Ключевые изменения в Wayland Ключевые изменения в Weston
0.85 Шаблон:Dts[14] Первый релиз.
0.95 Шаблон:Dts[15] Начало стабилизации API.
1.0 Шаблон:Dts[16][17] Стабилизация клиентского API.
1.1 Шаблон:Dts[18][19] Программный рендеринг[20].
1.2 Шаблон:Dts[21][22] Стабилизация серверного API. Средства управления цветом. Протокол для манипулирования субповерхностями и группами поверхностей. Бэкэнд для Raspberry Pi.
1.3 Шаблон:Dts[23] Новые пиксельные форматы для wl_shm. Поддержка биндингов к высокоуровневым языкам. Поддержка Android с Hybris.
1.4 Шаблон:Dts[24] Новые интерфейсы wl_subcompositor и wl_subsurface. Поддержка форматов фреймбуфера, отличных от XRGB8888. Теперь права суперпользователя необязательны благодаря задействованию logind из состава systemd.
1.5 Шаблон:Dts[25] libinput. Полноэкранный shell.
1.6 Шаблон:Dts[26] libinput по умолчанию.
1.7 Шаблон:Dts[27][28] Интерфейс xdg-shell.
1.8 Шаблон:Dts[29][30][31] Разделены заголовочные файлы клиента и сервера на базовые компоненты и генерируемые протоколы. Поддержка перерисовки по расписанию.
API для захвата содержимого поверхностей
Началось тестирование оболочки для информационно-развлекательных систем (IVI), добавлена экранная раскладка для IVI.
1.9 Шаблон:Dts[32][33][34] Обновлена лицензия. Обновлена лицензия. Предварительная реализация библиотеки libweston, в которую вынесен код внутренней функциональности Weston.
Добавлено новое расширение linux_dmabuf, предоставляющее средство для прямого вывода (zero-copy) видео на экран.
1.10 Шаблон:Dts[35][36] Поддержка Drag-and-Drop, событий от группируемых указателей Поддержка Video 4 Linux 2. Ввод от сенсорных экранов. Улучшение отладочных средств
1.11 Шаблон:Dts[37][38] Новая сервисная процедура загрузки, новая логика установки Proxy wrappers, изменение интерфейсов разделяемой памяти, Doxygen-генерированная HTML документация
1.12 Шаблон:Dts[39] Улучшения поддержки отладки Разделение на libweston и libwestond-desktop. Захват и ограничение указателя. Поддержка относительных указателей.
1.13 Шаблон:Dts[40][41][42] Изменение ABI Weston. Новая версия имеет порядковый номер 2.0, а не 1.13
1.14 8 августа 2017[43][44][45] Смена номера версии Weston на 3.0 обусловлена изменениями ABI, нарушающими совместимость
1.15 10 апреля 2018[46][47][48] Смена номера версии Weston на 4.0 обусловлена изменениями ABI, нарушающими совместимость
1.16 24 августа 2018 Weston 5.0.0
1.17 20 марта 2019 Weston 6.0.0
1.18 2 августа 2019 Weston 7.0.0 вышел на месяц позже
1.19 27 января 2021
Weston 8 24 января 2020
Weston 9 4 сентября 2020
Weston 10 2 февраля 2022[1]

Условные обозначения:

Шаблон:Legend Шаблон:Legend Шаблон:Legend Шаблон:Legend

Разработка

Альянс GENIVI
Автомобильный консорциум GENIVI, чья цель создать платформу для IVI индустрии, поддерживает Wayland[49].
Maliit
Maliit, фреймворк системы ввода, работает под Wayland[50][51][52].
Mesa
Mesa имеет встроенную поддержку Wayland[53].
Sailfish OS
Первый телефон Jolla использует Wayland[54][55][56].
Tizen
Tizen поддерживал Wayland в IVI setups до 2.x версий включительно[57], а начиная с версии 3.0 по умолчанию использует Wayland[58].

Планируемая поддержка

Шаблон:Актуальность списка

Ubuntu
Canonical, владелец Ubuntu, наняла Сэма Спилсбери[59], главного разработчика Compiz. Он будет перемещать зависимости от X11 в отдельный плагин[60]. Canonical планирует портировать Compiz на OpenGL ES, что требуется для работы с Wayland[61].
Fedora
Fedora поставляет Wayland начиная с семнадцатой версии[62]. Разработчик Fedora Маттиас Класен опубликовал в марте 2013 план, согласно которому Wayland должен стать оконной системой по умолчанию в Fedora 21[63]. Fedora 20 предоставляет предварительную реализацию GNOME 3.10 на Wayland[64][65].
GNOME
В марте 2013 разработчики GNOME анонсировали свои планы о полной поддержке Wayland через год[66]. GNOME 3.10 имеет начальную поддержку[67][68].
KDE
KWin, оконный менеджер KDE, получил поддержку OpenGL ES[69] в версии 4.7[70]. В январе 2013 главный разработчик KWin Мартин Грэсслин начал работать на Blue Systems, где одна из главных его целей добиться полной поддержки Wayland[71]. Экспериментальная поддержка Wayland уже есть в KWin 4.11[72].
Raspberry Pi
Raspberry Pi Foundation работает совместно с Collabora[73] над улучшением производительности и потребления оперативной памяти, однако не намереваются сменить X11 на Wayland до конца 2013[74].

Тулкиты

  • Clutter полностью поддерживает Wayland[75].
  • Enlightenment Foundation Libraries полностью поддерживает Wayland[76].
  • GTK+ 3.10 (вышел Шаблон:Date) полностью поддерживает Wayland 1.2, включая декорирование на стороне клиента, требуемое для Weston[77][78].
  • Qt 5 полностью поддерживает Wayland, включая декорирование на стороне клиента, что требуется для Weston (а не KWin).
  • Экспериментальная поддержка Wayland добавлена в SDL в версии 2.0.2[79][80].

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Rq Шаблон:Freedesktop.org Шаблон:Интерфейсы пользователя в UNIX-подобных системах

  1. Шаблон:Cite web
  2. Шаблон:Cite web
  3. Michael Larabel (November 03, 2008) Wayland: A New X Server For Linux Шаблон:Wayback
  4. Шаблон:Cite mailing list
  5. Шаблон:Cite web
  6. README Шаблон:Wayback file from the Wayland source code repositoryШаблон:Ref-en
  7. Шаблон:Cite web
  8. Шаблон:Cite web
  9. Шаблон:Cite web
  10. Шаблон:Cite mailing list
  11. Шаблон:Cite web
  12. Шаблон:Cite web
  13. Шаблон:Cite web
  14. Шаблон:Cite web
  15. Шаблон:Cite web
  16. Шаблон:Cite web
  17. Шаблон:Cite web
  18. Шаблон:Cite web
  19. Шаблон:Cite web
  20. Шаблон:Cite web
  21. Шаблон:Cite web
  22. Шаблон:Cite web
  23. Шаблон:Cite web
  24. Шаблон:Cite web
  25. Шаблон:Cite web
  26. Шаблон:Cite web
  27. Шаблон:Cite web
  28. Шаблон:Cite web
  29. Шаблон:Cite web
  30. Шаблон:Cite web
  31. Шаблон:Cite web
  32. Шаблон:Cite mailing list
  33. Шаблон:Cite mailing list
  34. Шаблон:Cite web
  35. Шаблон:Cite web
  36. Шаблон:Cite web
  37. Шаблон:Cite mailing list
  38. Шаблон:Cite web
  39. Шаблон:Cite mailing list
  40. Шаблон:Cite mailing list
  41. Шаблон:Cite mailing list
  42. Шаблон:Cite web
  43. Шаблон:Cite web
  44. Шаблон:Cite web
  45. Шаблон:Cite web
  46. Шаблон:Cite web
  47. Шаблон:Cite web
  48. Шаблон:Cite web
  49. Шаблон:Cite web
  50. Шаблон:Cite web
  51. Шаблон:Cite web
  52. Шаблон:Cite web
  53. Шаблон:Cite web
  54. Шаблон:Cite web
  55. Шаблон:Cite web
  56. Шаблон:Cite web
  57. Шаблон:Cite web
  58. Шаблон:Cite web
  59. Шаблон:Cite web
  60. Шаблон:Cite web
  61. Шаблон:Cite web
  62. Шаблон:Cite web
  63. Шаблон:Cite web
  64. Шаблон:Cite web
  65. Шаблон:Cite web
  66. Шаблон:Cite web
  67. Шаблон:Cite web
  68. Шаблон:Cite web
  69. Шаблон:Cite web
  70. Шаблон:Cite web
  71. Шаблон:Cite web
  72. Шаблон:Cite web
  73. Шаблон:Cite web
  74. Шаблон:Cite web
  75. Шаблон:Cite web
  76. Шаблон:Cite web
  77. Шаблон:Cite web
  78. Шаблон:Cite web
  79. Шаблон:Cite web
  80. Шаблон:Cite web