Что такое Wayland в Linux и чем он отличается от X?

Опубликовано: 2023-07-17
Файловый менеджер открыт на ноутбуке Газель System76
Ханна Страйкер / How-To Geek
Wayland — это замена оконной системы для дистрибутивов Linux. Он заменяет устаревший стандарт X11. Поскольку для работы с ним требуется модификация приложений, его внедрение пока идет медленно. На момент написания повышенная безопасность является основным преимуществом перед X11.

X11, или система X Window, позволяет вашей графической среде рабочего стола отображать окна и управлять ими. Wayland является заменой X11. Он разработан, чтобы быть быстрее и безопаснее. Вот что вам нужно знать о них.

Оглавление

Что такое Вейланд?
Множество имен X
Как работает X11
Как работает Вейланд
Медленное внедрение Wayland приложениями
Вы используете Wayland или X11?
Следует ли вам использовать Wayland или X11?

Что такое Вейланд?

Wayland — это современная замена X11, которая десятилетиями была оконной системой по умолчанию в Linux. Wayland — это протокол связи, определяющий обмен сообщениями между сервером отображения X Window и клиентскими приложениями. Проект Wayland предоставляет клиентские и серверные библиотеки, которые позволяют приложениям использовать протокол.

Проект Wayland был запущен разработчиком Red Hat в 2008 году.

Множество имен X

X Window System — это оконная система, впервые выпущенная для Unix Массачусетским технологическим институтом в 1984 году. Приложения могут основываться на функциональности, предлагаемой оконной системой, для создания пользовательских интерфейсов.

К 1987 году система X Window достигла версии 11 и стала известна как X11. Сейчас им управляет X.Org Foundation. Это все еще версия 11, хотя с 1987 года было выпущено много более мелких выпусков. На момент написания текущей стабильной версией является X11R7.7.

«X» в названии не означает десять римскими цифрами, а также не означает «Xtra», «Extended» или что-то в этом роде. Предыдущая оконная система называлась «W», что означает «окна», и они просто переходили на следующую букву в алфавите, когда начинали новый проект.

Вы услышите, что система X Window упоминается как «X», «X11», «Xorg», «X Windows» и «Система X Window».

Как работает X11

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

X11 предоставляет определение связи, которая должна проходить между различными компонентами работающей системы X Window. Это взаимодействие необходимо, потому что код, который приложение с поддержкой X использует для рисования своих окон и элементов интерфейса, не находится внутри приложения. Эта работа распределяется между X-сервером и оконным менеджером.

Приложения являются клиентами X-сервера. Менеджер окон — это особый тип клиента. X-сервер отвечает за управление ресурсами, выполнение запросов на отрисовку и передачу событий, таких как нажатия клавиш и щелчки мыши, соответствующим приложениям.

Он также действует как посредник в общении между оконным менеджером и приложениями, обмениваясь сообщениями между ними. Диспетчер окон поддерживает список окон, открытых приложениями, где они находятся на экране, какого они размера, перекрываются ли они и т. д.

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

Все современные графические среды рабочего стола, включая GNOME и KDE, используют оконные менеджеры компоновки.

Как работает Вейланд

Wayland призван решить проблемы X11. Архитектура X11 требует большого количества сообщений. X-сервер находится между клиентами и оконным менеджером. Он также находится между всем и — через ядро ​​— графическим оборудованием. Объем сообщений может привести к задержке и задержке, скачкообразному визуальному восприятию.

Также имеется большая кодовая база. Есть серверное приложение, приложение Window Manager и библиотека X11, которую используют клиенты. Чем больше (и старше) ваша кодовая база, тем сложнее ее поддерживать и тем больше вам придется бороться с устаревшим кодом.

Изменив архитектуру, Wayland модернизировала и оптимизировала кодовую базу, увеличив производительность и безопасность.

По сути, они объединили сервер и оконный менеджер в одно приложение. Они удалили любой код, который выполнял функции, которые теперь выполняет ядро. Вместо того, чтобы копировать усилия, они использовали функциональность ядра.

С Wayland композитор и клиентское приложение взаимодействуют напрямую. Композитор поддерживает свое внутреннее сопоставление того, какие окна находятся где на рабочем столе, а также в каком размере и в каком состоянии они находятся. Он обрабатывает события изменения клавиатуры, мыши и окна и отправляет их приложениям, которым принадлежат эти окна.

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

Приложение либо обновляет буфер, используемый для хранения окна, либо создает новый и отбрасывает старый. Затем клиентское приложение отправляет компоновщику уведомление, сообщая ему об обновлении сопоставления окон и использовании нового или обновленного видеобуфера.

Эта упрощенная архитектура и современный дизайн кода обеспечивают повышение производительности, в частности изменение размеров окна и перетаскивание, которые выглядят плавно и плавно.

Медленное внедрение Wayland приложениями

Wayland — оконная система по умолчанию в Debian 10 и новее, Fedora 34 или новее, Ubuntu 18.04 или новее, а также в других дистрибутивах, таких как Arch Linux. Несмотря на это, чаще всего Wayland запускает приложения X11.

Существует слой совместимости под названием XWayland, который позволяет приложениям X11 работать под управлением Wayland. Это было необходимо, потому что большинство приложений X11 не были изменены и перенесены на Wayland.

В средах рабочего стола, которые предоставляют компоновщики Wayland, такие как GNOME, официальные приложения, такие как текстовый редактор GNOME и карты, файлы и календарь, являются родными приложениями Wayland. Но подавляющее большинство приложений X11 по-прежнему остаются нетронутыми, родными приложениями X11.

Nvidia выпускает драйверы графических процессоров Linux с открытым исходным кодом с уловом
СВЯЗАННЫЕ Nvidia выпускает драйверы графического процессора Linux с открытым исходным кодом с уловом

Промежуточное ПО XWayland обычно работает нормально, но могут возникнуть проблемы с некоторыми приложениями X11, которые выполняют низкоуровневые функции, связанные с экраном, такие как запись экрана. Использование Wayland с NVIDIA может быть таким же мучением, как и с X11, хотя у меня не было проблем с моим ежедневным драйвером, использующим его с графическим процессором NVIDIA GeForce GT 1030.

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

СВЯЗАННЫЕ С: Что нового в Ubuntu 21.04 «Hirsute Hippo»

Вы используете Wayland или X11?

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

 эхо $XDG_SESSION_TYPE

В системе, использующей Wayland, вывод будет таким:

А в системе с X Window System вы увидите:

В редких случаях переменная среды XDG_SESSION_TYPE не устанавливается. В этом случае вы можете использовать эту команду вместо этого:

 loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Type --value

Внутренняя вложенная команда loginctl использует команду show-user для отображения свойств указанного пользователя. Команда whoami дает нам имя текущего пользователя. Параметр -p (свойство) ограничивает вывод из loginctl информацией о настройке «Отображение», и мы используем параметр --value для возврата только значения. Нам не нужна строка «Display=» в ответе от loginctl . Все это дает нам идентификатор сеанса.

Мы передаем идентификатор сеанса внешнему loginctl и используем команду show-session для отображения атрибутов сеанса. Мы используем параметр -p (свойство), чтобы ограничить вывод информацией о типе сеанса, и используем параметр --value , чтобы показать значение без метки «Type=».

На компьютере с Wayland вы увидите:

Использование команды loginctl в Fedora Linux, чтобы определить, используется ли Wayland или X11.

Если вы используете систему X Window, вы увидите:

Использование команды loginctl в Manjaro inux, чтобы определить, используется ли Wayland или X11.

Следует ли вам использовать Wayland или X11?

Если у вас нет проблем, вы можете придерживаться того, что уже используете. Но если вы заметили нестабильность или прерывистое обновление экрана, вы можете попробовать перейти на тот, который вы не используете.

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

Раскрывающееся меню в GNOME, которое позволяет вам выбрать рабочий стол на основе Wayland или X11.

Меню предложит вам различные версии GNOME. Параметры, в которых упоминается «Xorg», используют систему X Window, а те, которые не используют Wayland.

СВЯЗАННЫЕ С: Как составить список переменных среды в Linux