Wayland


Wayland
Логотип программы Wayland
Тип протокол передачи данных
Разработчик Кристиан Хогсберг[d][1][2] и Freedesktop.org[3]
Первый выпуск 2008
Сайт wayland.freedesktop.org​ (англ.)
Логотип Викисклада Медиафайлы на Викискладе

Wayland — протокол для организации графического сервера в Linux и других UNIX-подобных операционных системах. Разработка Wayland была начата Кристианом Хогсбергом (дат. Kristian Høgsberg), на тот момент сотрудником Red Hat, ныне членом Центра открытых технологий Intel[4]. Wayland является свободным ПО[5][6][7]. Название происходит от города Вэйланд, когда Хогсберг ехал через этот город, ему пришёл в голову концепт системы[8].

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

The Wayland display server protocol relys on EGL

По мнению разработчиков, 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[9].

Maynard

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

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

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

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

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

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

Релизы

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

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

     Будущая версия      Текущая версия      Поддерживается      Не поддерживается

Разработка

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

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

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

Тулкиты

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

Примечания

  1. Хогсберг К. Premature publicity is better than no publicity — 2008.
  2. Larabel M. Wayland: A New X Server For Linux (англ.) // Phoronix — 2008.
  3. Larabel M. Wayland Becomes A FreeDesktop.org Project (англ.) // Phoronix — 2010.
  4. Høgsberg, Kristian EGL and GLES1/2 on Linux (англ.). Linux Plumbers Conference, 2010. Дата обращения: 19 января 2014. Архивировано 9 ноября 2013 года.
  5. Официальный сайт. Дата обращения: 30 октября 2010. Архивировано 22 ноября 2010 года.
  6. Michael Larabel (November 03, 2008) Wayland: A New X Server For Linux Архивная копия от 15 ноября 2010 на Wayback Machine
  7. Kristian Høgsberg. Wayland license clarification (англ.). Список рассылки wayland-devel (22 ноября 2010). Дата обращения: 23 ноября 2010.
  8. Evan Jenkins. The Linux graphics stack from X to Wayland (англ.). Ars Technica (March 2011). Дата обращения: 29 октября 2017. Архивировано 14 февраля 2012 года.
  9. README Архивная копия от 26 апреля 2012 на Wayback Machine file from the Wayland source code repository (англ.)
  10. Maynard announcement (16 April 2014). Дата обращения: 16 апреля 2014. Архивировано 8 марта 2017 года.
  11. Maynard: Develop on a computer. Дата обращения: 20 января 2020. Архивировано 7 декабря 2020 года.
  12. Марк Шаттлворт. Unity on Wayland (англ.). Марк Шаттлворт (4 ноября 2010). Дата обращения: 4 ноября 2010. Архивировано 24 августа 2011 года.
  13. Oliver Ries. Taking Unity to the next level (англ.). Список рассылки ubuntu-devel (Mar 4 2013). Дата обращения: 5 марта 2013.
  14. Ubuntu Unity is dead: Desktop will switch back to GNOME next year. Дата обращения: 2 июня 2017. Архивировано 30 апреля 2020 года.
  15. Corentin Chary. Introducing xwayland and xf86-video-wlshm (англ.) (21 June 2011). — «This driver really make things easy to test, since you don't need any specific hardware....». Дата обращения: 19 января 2014. Архивировано 8 декабря 2013 года.
  16. Wayland (англ.). Wayland.freedesktop.org. Дата обращения: 15 июля 2013. Архивировано 5 апреля 2020 года.
  17. Høgsberg, Kristian [ANNOUNCE Wayland and Weston 0.85.0 released] (англ.). Wayland mailing list (9 February 2011). Дата обращения: 8 июня 2013. Архивировано 21 июня 2014 года.
  18. Høgsberg, Kristian Wayland and Weston 0.95.0 released (англ.). Wayland mailing list (24 July 2012). Дата обращения: 14 июля 2013. Архивировано 17 марта 2013 года.
  19. Høgsberg, Kristian Wayland and Weston 1.0 (англ.). Wayland mailing list (22 October 2012). Дата обращения: 14 июля 2013. Архивировано 12 сентября 2013 года.
  20. Scherschel, Fabian Wayland's 1.0 milestone fixes graphics protocol (англ.). The H - Open. Heinz Heise (23 October 2013). Дата обращения: 14 июля 2013. Архивировано 7 декабря 2013 года.
  21. Larabel, Michael Wayland 1.1 Officially Released With Weston 1.1. Phoronix (16 April 2013). Дата обращения: 14 июля 2013. Архивировано 3 февраля 2014 года.
  22. 1.1 Released (англ.). freedesktop.org. Дата обращения: 18 июля 2013. Архивировано 23 июня 2013 года.
  23. Larabel, Michael A Software-Based Pixman Renderer For Wayland's Weston (англ.). Phoronix (6 January 2013). Дата обращения: 14 июля 2013. Архивировано 3 февраля 2014 года.
  24. Larabel, Michael Wayland 1.2.0 Released, Joined By Weston Compositor. Phoronix (13 July 2013). Дата обращения: 14 июля 2013. Архивировано 3 февраля 2014 года.
  25. Wayland and Weston 1.2.0 released (англ.). Lists.freedesktop.org (28 июня 2013). Дата обращения: 18 июля 2013. Архивировано 16 июля 2013 года.
  26. Wayland and Weston 1.3 release notes (англ.) (11 октября 2013). Дата обращения: 19 января 2014. Архивировано 13 января 2014 года.
  27. Høgsberg, Kristian Wayland and Weston 1.4 is out. Wayland mailing list (24 January 2014). Дата обращения: 25 мая 2014. Архивировано 30 марта 2014 года.
  28. Høgsberg, Kristian Wayland and Weston 1.5.0 is released. Wayland mailing list (20 May 2014). Дата обращения: 25 мая 2014. Архивировано 23 мая 2014 года.
  29. Høgsberg, Kristian Wayland and Weston 1.6.0 is released. Wayland mailing list (19 Feb 2014). Дата обращения: 25 января 2015. Архивировано 21 февраля 2015 года.
  30. Harrington, Bryce ANNOUNCE wayland 1.7.0. wayland-devel mailing list (14 February 2015). Дата обращения: 24 января 2016. Архивировано 7 марта 2016 года.
  31. Harrington, Bryce ANNOUNCE weston 1.7.0. wayland-devel mailing list (14 February 2015). Дата обращения: 24 января 2016. Архивировано 29 июня 2015 года.
  32. Harrington, Bryce ANNOUNCE wayland 1.8.0 (англ.). wayland-devel mailing list (2 June 2015). Дата обращения: 24 января 2016. Архивировано 10 марта 2016 года.
  33. Harrington, Bryce ANNOUNCE weston 1.8.0 (англ.). wayland-devel mailing list (2 June 2015). Дата обращения: 24 января 2016. Архивировано 10 марта 2016 года.
  34. Wayland 1.8 - OpenSource - Новости. Дата обращения: 24 января 2016. Архивировано 2 февраля 2016 года.
  35. Harrington, Bryce [ANNOUNCE wayland 1.9.0]. Список рассылки wayland-devel (21 September 2015). Дата обращения: 24 января 2016.
  36. Harrington, Bryce [ANNOUNCE weston 1.9.0]. Список рассылки wayland-devel (21 September 2015). Дата обращения: 24 января 2016.
  37. Wayland 1.9 — OpenSource — Новости linux.org.ru. Дата обращения: 24 января 2016. Архивировано 2 февраля 2016 года.
  38. Larabel, Michael Wayland 1.10 Officially Released. Phoronix.com (16 February 2016). Дата обращения: 17 апреля 2016. Архивировано 21 июня 2017 года.
  39. Wayland 1.10 — OpenSource — Новости linux.org.ru. Дата обращения: 1 июня 2017. Архивировано 12 июня 2017 года.
  40. Harrington, Bryce [ANNOUNCE weston 1.11.0]. Список рассылки wayland-devel (1 June 2016). Дата обращения: 1 июня 2016.
  41. Wayland 1.11 — OpenSource — Новости linux.org.ru. Дата обращения: 1 июня 2017. Архивировано 10 марта 2017 года.
  42. Harrington, Bryce [ANNOUNCE wayland 1.12.0]. Список рассылки wayland-devel (21 September 2016). Дата обращения: 21 сентября 2016.
  43. Harrington, Bryce [ANNOUNCE wayland 1.13.0]. Список рассылки wayland-devel (21 February 2017). Дата обращения: 30 апреля 2017.
  44. Harrington, Bryce [ANNOUNCE weston 2.0.0]. Список рассылки wayland-devel (25 February 2017). Дата обращения: 30 апреля 2017.
  45. Выпуск Weston 2.0 — OpenSource — Новости linux.org.ru. Дата обращения: 1 июня 2017. Архивировано 9 марта 2017 года.
  46. Bryce Harrington. [ANNOUNCE wayland 1.14.0] (8 августа 2017). Дата обращения: 10 апреля 2018. Архивировано 20 октября 2018 года.
  47. Bryce Harrington. [ANNOUNCE weston 3.0.0] (8 августа 2017). Дата обращения: 10 апреля 2018. Архивировано 20 октября 2018 года.
  48. OpenNews: Выпуск Wayland 1.14 и композитного сервера Weston 3.0. www.opennet.ru. Дата обращения: 10 апреля 2018. Архивировано 10 апреля 2018 года.
  49. Derek Foreman. [ANNOUNCE wayland 1.15.0] (9 апреля 2018). Дата обращения: 10 апреля 2018. Архивировано 10 апреля 2018 года.
  50. Derek Foreman. [ANNOUNCE weston 4.0.0] (9 апреля 2018). Дата обращения: 10 апреля 2018. Архивировано 10 апреля 2018 года.
  51. OpenNews: Выпуск Wayland 1.15 и композитного сервера Weston 4.0. www.opennet.ru. Дата обращения: 10 апреля 2018. Архивировано 10 апреля 2018 года.
  52. Wayland Backend DRM | IVI Layer Management (англ.) (недоступная ссылка). GENIVI Alliance. Дата обращения: 15 июля 2013. Архивировано 1 февраля 2014 года.
  53. Maliit Status Update (недоступная ссылка). Posterous (April 2, 2013). Дата обращения: 14 октября 2013. Архивировано 17 мая 2013 года.
  54. More Maliit Keyboard Improvements: QtQuick2. Murray's Blog (2 апреля 2013). Дата обращения: 14 октября 2013. Архивировано 13 октября 2013 года.
  55. Maliit under Wayland (недоступная ссылка). Дата обращения: 14 сентября 2013. Архивировано 11 июня 2013 года.
  56. Richard Hillesley. Wayland – Beyond X (англ.). The H Open 3. Heise Media UK (13 февраля 2012). Дата обращения: 19 января 2014. Архивировано 6 декабря 2013 года.
  57. The First Jolla Smartphone Runs With Wayland (англ.). LinuxG.net (14 июля 2013). Дата обращения: 8 октября 2013. Архивировано 28 июня 2014 года.
  58. sailfishos main components diagram (англ.). Дата обращения: 19 января 2014. Архивировано 25 октября 2013 года.
  59. our first Jolla will ship with wayland, yes (англ.). Дата обращения: 19 января 2014. Архивировано 11 апреля 2014 года.
  60. IVI/IVI Setup (англ.). Tizen Wiki. Дата обращения: 8 апреля 2013. Архивировано 10 февраля 2017 года.
  61. [IVI] Tizen IVI 3.0-M1 released (англ.). Tizen.org. Дата обращения: 15 июля 2013. Архивировано 2 октября 2013 года.
  62. Sam Spilsbury. A bright new future for Compiz (англ.) (25 ноября 2010). — «...I was also hired by Canonical Ltd...». Архивировано 8 апреля 2012 года.
  63. Sam Spilsbury. Compiz in a strange new land (англ.) (7 ноября 2010). Архивировано 8 апреля 2012 года.
  64. deebeeoh. I am an Ubuntu Unity Developer, AMA (англ.). — «We are going to be helping compiz port to OpenGL ES». Дата обращения: 12 января 2010. Архивировано 8 апреля 2012 года.
  65. Package wayland (англ.). Fedora Project. Дата обращения: 15 июля 2013. Архивировано 1 февраля 2014 года.
  66. Wayland and Fedora (англ.). Lists.fedoraproject.org. Дата обращения: 15 июля 2013. Архивировано 8 июля 2013 года.
  67. You Can Now Run GNOME Shell Wayland On Fedora 20 (англ.). Phoronix (3 октября 2013). Дата обращения: 8 октября 2013. Архивировано 10 октября 2013 года.
  68. GNOME / Wayland in Fedora (англ.) (3 октября 2013). Дата обращения: 8 октября 2013. Архивировано 23 апреля 2014 года.
  69. Larabel, Michael GNOME Will Move Full-Speed With Wayland Support (англ.). Phoronix (13 March 2013). Дата обращения: 8 апреля 2013. Архивировано 28 июня 2013 года.
  70. GNOME 3.10 Has Been Officially Released (англ.). Phoronix (25 сентября 2013). Дата обращения: 8 октября 2013. Архивировано 1 октября 2013 года.
  71. 3.10 Released! (англ.). GNOME (25 сентября 2013). Дата обращения: 8 октября 2013. Архивировано 5 февраля 2021 года.
  72. Grässlin, Martin KWin runs on OpenGL ES (англ.) (28 November 2010). — «It does not only help, it is a must have to start working for Wayland. So to say it’s the first part of the KWin port to Wayland». Дата обращения: 22 мая 2011. Архивировано 9 ноября 2020 года.
  73. Grässlin, Martin On the Road to Modern OpenGL (ES) (англ.) (19 января 2011). Дата обращения: 31 июля 2013. Архивировано 6 декабря 2021 года.
  74. Grässlin, Martin KWin Hacking++ (англ.). Дата обращения: 8 апреля 2013. Архивировано 9 октября 2012 года.
  75. Larabel, Michael KDE 4.11 Beta Released, Works On Wayland. Phoronix (14 June 2013). Дата обращения: 16 июня 2013. Архивировано 3 февраля 2014 года.
  76. Raspberry Pi Case Study (англ.). Collabora. Дата обращения: 9 августа 2013. Архивировано 1 сентября 2013 года.
  77. Wayland preview (англ.). Raspberry Pi. Дата обращения: 9 августа 2013. Архивировано 9 февраля 2014 года.
  78. Clutter on Wayland (англ.) (недоступная ссылка). Дата обращения: 28 марта 2012. Архивировано 24 ноября 2012 года.
  79. Wayland – Enlightenment (англ.) (недоступная ссылка). Дата обращения: 6 марта 2013. Архивировано 29 марта 2013 года.
  80. GTK+ 3.10 release mail (англ.) (23 сентября 2013). Дата обращения: 24 сентября 2013. Архивировано 27 сентября 2013 года.
  81. Documentation of the Wayland support in GTK+ (англ.) (недоступная ссылка) (3 сентября 2013). Архивировано 22 июня 2013 года.
  82. Lantinga, Sam SDL 2.0.2 RELEASED! (англ.) (Mar 08, 2014). — «Added experimental Wayland and Mir support, disabled by default». Дата обращения: 15 марта 2014. Архивировано 15 марта 2014 года.
  83. Toolkits on Wayland. Дата обращения: 28 марта 2012. Архивировано 13 января 2014 года.

Ссылки