Wayland Linux что это такое
Обновлено: 21.11.2024
Возможно, вы слышали о сервере отображения Wayland. Вот что это такое и как это влияет на ваш компьютер с Linux.
Аспекты рабочего стола Linux постоянно меняются, но некоторые компоненты существуют десятилетиями. Возьмите систему X Window (известную прежде всего как X). Ведутся работы по созданию более быстрой и безопасной замены. Эта замена — Wayland.
Wayland появился давно, и несколько операционных систем на базе Linux приняли его в качестве протокола сервера отображения по умолчанию. Если у вас еще нет, есть шанс, что скоро будет. Вот что значит использовать Linux с Wayland.
Что такое Wayland?
Wayland — это протокол, сообщающий программам, как они должны выглядеть на экране в зависимости от ваших действий (например, перемещения окна или нажатия кнопки). Технически Wayland не является заменой X-сервера сам по себе — Wayland только определяет способ, которым такой дисплей-сервер должен взаимодействовать с этими приложениями.
Wayland использует третью сторону, известную как компоновщик Wayland, в качестве сервера отображения. Примеры включают Mutter и KWin (рабочие столы GNOME и KDE Plasma соответственно). Wayland пытается упростить обмен данными с сервером отображения, упрощая и ускоряя дальнейшую разработку.
Как и многим другим технологиям будущего, Wayland еще предстоит пройти через некоторые прорехи. X существует уже давно и неуклонно развивается. Это означает, что Wayland есть что наверстать (наряду с серверами отображения, которые его реализуют). Но сейчас есть несколько вещей, которые нужно знать, чтобы сделать тестирование более плавным.
Избегайте приложений GTK+ 2 или Qt 4 на Wayland
Большинство приложений Linux, с которыми вы взаимодействуете изо дня в день, написаны для одного из двух графических инструментов: GTK+ и Qt. Эти фреймворки действуют как клиенты для сервера отображения, запрашивая объекты, которые будут отображаться на вашем экране. Однако эти запросы нужно сначала понять, и это зависит от набора инструментов.
В результате на настольных компьютерах Wayland могут работать только некоторые типы программ. Например, программы GTK+ 3 также могут работать правильно. То же самое можно сказать и о тех, кто написан на Qt 5 (набор инструментов, на котором основан рабочий стол Plasma).
При этом, если вы попытаетесь открыть, скажем, приложение Qt 4, у вас будут все шансы, что оно запустится. Wayland делает это, запуская X-сервер за кулисами, чтобы прослушивать приложения, которые он не может понять. Однако это может привести к увеличению использования памяти и несколько снижению скорости. Кроме того, есть некоторые вещи, которые этот подход просто не может сделать в данный момент.
Некоторые приложения несовместимы с Wayland
Wayland и X разработаны по-разному, поэтому некоторые приложения, работающие с X, просто не смогут работать с Wayland.
Подумайте о приложениях для изменения цвета экрана, таких как Redshift и f.lux. Эти приложения фильтруют синий свет на вашем дисплее в зависимости от времени суток. Они работают с помощью расширений X, таких как RandR, которые предоставляют программам простой способ попросить X изменить отображение вашего экрана.
Хотя Wayland предоставляет средства для частичного воссоздания этой возможности, ее фактическая реализация зависит от каждого композитора Wayland. Это означает, что хотя одна среда рабочего стола может поддерживать что-то вроде Redshift (например, функцию GNOME Night Light, показанную выше), эта функциональность не обязательно доступна в другом месте.
Вы можете столкнуться с подобными проблемами с программным обеспечением для записи экрана. В качестве функции безопасности сервер отображения Wayland блокирует запись экрана приложениями. Это не значит, что запись экрана на Wayland принципиально невозможна. Разработчики работают над тем, чтобы реализовать эту функцию другим способом.
Композитинг обязателен
Композитинг – это метод, помогающий предотвратить разрывы экрана и появление артефактов. Это делается путем хранения копий вашего дисплея в памяти, обычно с помощью вашей видеокарты. Таким образом, даже если приложения перестанут отвечать, вашему серверу дисплея все равно будет с чем работать. Композиция также обеспечивает анимацию окон и тени.
Wayland разработан, чтобы сделать этот процесс намного эффективнее, чем X, сделав его обязательным. X имеет композитинг в качестве дополнительной функции через расширение под названием Xcomposite. Но из-за того, как это реализовано, это занимает немного больше времени по сравнению с Wayland.
При этом композитинг может привести к некоторым проблемам. Композиция приводит к несколько более низкой производительности таких программ, как игры. В X большинство настольных компьютеров отключают композитинг, когда приложение переходит в полноэкранный режим. Но многим композиторам Wayland все еще нужно реализовать это. Если вы заинтересованы в использовании программ с интенсивным использованием графики на рабочем столе Wayland, очень важно помнить об этом.
Графика Nvidia может не работать с Wayland
В частности, если вы используете проприетарный графический драйвер Nvidia, Wayland, вероятно, вам не подойдет. Это связано с проблемой композиции выше.Чтобы этот процесс работал, ваш графический драйвер должен определенным образом взаимодействовать с компоновщиками Wayland.
В видеокартах Intel и AMD этой проблемы нет, поскольку они используют ожидаемый стандарт, который называется GBM (Generic Buffer Management). Nvidia считает, что их способ взаимодействия с Wayland, называемый EGL, лучше, и поэтому придерживается его.
Эту проблему можно решить двумя способами: драйверы Nvidia реализуют GBM или композиторы Wayland реализуют EGLStreams. В настоящее время Nvidia, похоже, не заинтересована в использовании первого решения.
Как использовать Wayland
На данный момент большинство дистрибутивов Linux позволяют установить Wayland, но большинство по-прежнему использует X по умолчанию. Вы можете выполнить поиск Wayland в репозиториях вашего дистрибутива, выйти из рабочего стола и выбрать Wayland при повторном входе.
Fedora был одним из первых дистрибутивов, которые противостояли этой тенденции, и уже несколько лет использует Wayland по умолчанию. Fedora известна тем, что использует новейшие технологии, которые может предложить рабочий стол Linux, а также весьма удобна в использовании. Но Fedora не одинока.
Некоторые дистрибутивы, которые предоставляют Wayland по умолчанию
- Федора
- Дебиан
- openSUSE Перекати-поле
- Чистая ОС
- Red Hat Enterprise Linux
- SUSE Enterprise Linux
Почему другие дистрибутивы не переключились? Многие ждут, когда прояснятся еще несколько вопросов. Многие люди рассчитывают использовать проприетарный графический драйвер Nvidia, чтобы получить наиболее оптимальные игровые возможности. Некоторые хотят записывать свой экран, чтобы создавать подкасты или транслировать видео в Интернете.
Учитывая, что большинство из нас не замечает сервер отображения, дистрибутивы не стремятся создавать такие заметные проблемы в обмен на преимущества, которые, хотя и реальны, в основном существуют за кулисами. И если вы попытаетесь исправить что-то с помощью удаленного рабочего стола, это как раз то, что может работать или не работать в Wayland.
Wayland — это протокол сервера отображения. Он призван стать преемником системы X Window. Вы можете найти сравнение между Wayland и Xorg в Википедии.
Серверы отображения, использующие протокол Wayland, называются компоновщиками, поскольку они также действуют как оконные менеджеры компоновки. Ниже вы можете найти список композиторов Wayland.
Для обеспечения обратной совместимости и беспрепятственного запуска устаревших приложений X11 можно использовать XWayland, который предоставляет X-сервер в Wayland.
Содержание
Требования
Большинство компоновщиков Wayland работают только в системах, использующих настройку режима ядра. Wayland сам по себе не предоставляет графическую среду; для этого вам также понадобится компоновщик (см. следующий раздел) или среда рабочего стола, включающая компоновщик (например, GNOME или KDE).
Чтобы драйвер графического процессора и компоновщик Wayland были совместимы, они должны поддерживать один и тот же буферный API. Существует два основных API: GBM и EGLStreams.
Композиторы
Мозаика
- Cagebreak — на основе клетки, вдохновленной крысиным ядом.
- Cardboard — компоновщик с прокруткой, вдохновленный PaperWM и основанный на wlroots.
- dwl — dwm-подобный компоновщик Wayland на основе wlroots.
- japokwm — динамический компоновщик листов Wayland, основанный на создании макетов на основе wlroots.
- Qtile — полнофункциональный мозаичный оконный менеджер и компоновщик Wayland, написанный и настроенный на Python.
- river — динамический мозаичный компоновщик Wayland, вдохновленный dwm и bspwm.
- Sway — i3-совместимый компоновщик Wayland на основе wlroots.
- Velox — простой оконный менеджер на основе swc, вдохновленный dwm и xmonad.
- Vivarium — динамический мозаичный компоновщик Wayland с использованием wlroots и семантикой рабочего стола, вдохновленной xmonad.
- waymonad — компоновщик Wayland, вдохновленный xmonad, написанный на Haskell.
- newm — компоновщик Wayland, написанный для ноутбуков и сенсорных панелей.
Стекирование
Другое
- Cage – отображает одно полноэкранное приложение, например киоск.
- Композитор лабиринта — визуализирует окна в трехмерном лабиринте с помощью Qt.
- Motorcar — компоновщик Wayland для изучения трехмерных окон с использованием виртуальной реальности.
Некоторые из перечисленных выше могут поддерживать менеджеры отображения. Проверьте /usr/share/wayland-sessions/compositor.desktop, чтобы узнать, как они запускаются.
Менеджеры отображения
Менеджеры отображения, перечисленные ниже, поддерживают запуск компоновщиков Wayland. В столбце «Тип» указано, поддерживает ли диспетчер отображения запуск самого себя на Wayland или нет.
Имя | Тип | Описание |
---|---|---|
GDM | Работает на Wayland | Диспетчер отображения GNOME. |
greetd | Демон входа в систему | Минимальный и гибкий демон входа в систему. |
LightDM | Работает на X11 | Диспетчер отображения для нескольких рабочих столов. |
Ly | Выполняется в консоли | Диспетчер отображения TUI, написанный на C |
Работает на X11 | Диспетчер отображения на основе QML. | |
tbsm | Работает на console | Простой модуль запуска сеансов CLI, написанный на чистом bash. |
Библиотеки графического интерфейса пользователя
В пакетах gtk3 и gtk4 включен бэкенд Wayland. По умолчанию GTK использует серверную часть Wayland, но его можно заменить на Xwayland, изменив переменную среды: GDK_BACKEND=x11 .
Чтобы включить поддержку Wayland в Qt 5 или 6, установите пакет qt5-wayland или qt6-wayland соответственно.
Чтобы запустить приложение Qt с подключаемым модулем Wayland [4], используйте переменную среды -platform wayland или QT_QPA_PLATFORM=wayland. Чтобы принудительно использовать X11 в сеансе Wayland, используйте QT_QPA_PLATFORM=xcb. Это может быть необходимо для некоторых проприетарных приложений, которые не используют системную реализацию Qt, таких как zoom AUR . QT_QPA_PLATFORM="wayland;xcb" позволяет Qt использовать плагин xcb (X11), если Wayland недоступен.[5]
На некоторых компоновщиках, например sway, приложения Qt, работающие по умолчанию, могут иметь недостающие функции. Например, KeepassXC не сможет свернуть в трей. Это можно решить, установив qt5ct и установив QT_QPA_PLATFORMTHEME=qt5ct перед запуском приложения.
Беспорядок
Инструментарий Clutter имеет серверную часть Wayland, которая позволяет ему работать в качестве клиента Wayland. Серверная часть включена в пакете clutter.
Чтобы запустить приложение Clutter на Wayland, установите CLUTTER_BACKEND=wayland .
Чтобы запустить приложение SDL2 на Wayland, установите SDL_VIDEODRIVER=wayland .
Примечание. Многие проприетарные игры поставляются в комплекте со старыми версиями SDL, которые не поддерживают Wayland и могут полностью сломаться, если вы установите SDL_VIDEODRIVER=wayland . Чтобы приложение запускалось с XWayland, установите SDL_VIDEODRIVER=x11 .
Чтобы использовать GLFW с серверной частью Wayland, установите пакет glfw-wayland (вместо glfw-x11 ).
EFL имеет полную поддержку Wayland. Чтобы запустить приложение EFL на Wayland, см. страницу проекта Wayland.
победить
Winit — это библиотека обработки окон в Rust. По умолчанию будет использоваться серверная часть Wayland, но его можно заменить на Xwayland, изменив переменную среды: WINIT_UNIX_BACKEND=x11 .
Электрон
Чтобы использовать электронные приложения в Wayland, в командную строку приложения необходимо добавить следующие флаги: --enable-features=UseOzonePlatform --ozone-platform=wayland . Это можно сделать напрямую или через файл конфигурации, подробнее см. ниже.
Совет: в GNOME используйте --enable-features=UseOzonePlatform,WaylandWindowDecorations, чтобы иметь рабочее оформление окна. Это поддерживается, начиная с электрона17.
Примечание. К сожалению, переменные среды, позволяющие использовать Wayland, не существуют в электронной версии, однако есть открытый запрос функции на добавление поддержки в электронную версию.
Эти флаги можно настроить для каждого приложения с помощью аргументов командной строки или глобально с помощью файла конфигурации пользователя. К сожалению, в настоящее время флаги из файла конфигурации имеют приоритет над флагами, переданными в командной строке, поэтому, если вам нужно, чтобы некоторые приложения имели разные конфигурации, вам следует выбирать флаги для каждого приложения, а не для каждого пользователя.
За приложение
Добавьте флаги (например, --enable-features=UseOzonePlatform --ozone-platform=wayland ) в командную строку выполнения приложения. Вероятно, вы можете сделать это, изменив файл .desktop и добавив флаги в конец строки Exec=.
На пользователя
Создайте или отредактируйте файл $/electron-flags.conf и добавьте флаги (по одному параметру на строку), например:
Обратите внимание, что для более старых версий электрона требуется собственный файл electronic -flags.conf. Например, если у вас установлен пакет electronic16, вы можете сделать
из вашего каталога $ (или сохраните отдельный файл $/electron16-flags.conf, если вы хотите, чтобы разные электронные версии использовали разные параметры времени выполнения).
Реализация платформы Java с открытым исходным кодом OpenJDK еще не имеет встроенной поддержки Wayland. До Wakefield, проекта, целью которого является внедрение Wayland в OpenJDK, можно было использовать XWayland.
XWayland
XWayland — это X-сервер, работающий под управлением Wayland. Он обеспечивает обратную совместимость для устаревших приложений X11.
Чтобы использовать его, установите пакет xorg-xwayland.
XWayland запускается с помощью компоновщика, поэтому вам следует проверить совместимость XWayland и инструкции по запуску XWayland с помощью компоновщика по вашему выбору.
Примечание. Что касается безопасности: XWayland — это X-сервер, поэтому он не имеет функций безопасности Wayland!
Драйвер Nvidia
Примечание. Драйверы Nvidia до версии 470 (например,nvidia-390xx-dkms AUR ) не поддерживают XWayland с аппаратным ускорением, что приводит к снижению производительности приложений, не связанных с Wayland, в сеансах Wayland.
Обратите внимание, что требуется включить DRM KMS. Также обратите внимание на дополнительную информацию в официальной документации, касающуюся вашего диспетчера отображения (например, GDM).
Советы и рекомендации
Консоль отладки Kwin Wayland
Если вы используете kwin , выполните следующие действия, чтобы увидеть, какие окна используют Xwayland или собственный Wayland, поверхности, события ввода, содержимое буфера обмена и многое другое.
Визуальное обнаружение приложений Xwayland
Чтобы определить, запущено ли приложение через Xwayland, вы можете запустить extramaus AUR . Наведите указатель мыши на окно приложения. Если красная мышь двигается, приложение работает через Xwayland.
В качестве альтернативы вы можете использовать xorg-xeyes и посмотреть, двигаются ли глаза при наведении указателя мыши на окно приложения.
Переназначение клавиш клавиатуры
Модель безопасности Wayland не позволяет другим программам, кроме компоновщика, захватывать необработанный ввод с клавиатуры. Некоторые композиторы поддерживают переназначение клавиш (например, mutter через gnome-tweaks), но многие — нет. Программы evremap AUR , evdevremapkeys-git AUR и kbct-git AUR обходят это, захватывая клавиатуру перед компоновщиком и передавая измененные ввода с клавиатуры через него.
Устранение неполадок
Цветокоррекция
Замедленное движение, графические глюки и сбои
Пользователи Gnome-shell могут испытывать проблемы с отображением при переходе на Wayland из X. Одной из основных причин может быть CLUTTER_PAINT=disable-clipped-redraws:disable-culling, установленный вами для gnome-shell на основе Xorg. Просто попробуйте удалить его из /etc/environment или других rc-файлов, чтобы убедиться, что все вернется на круги своя.
Не удается открыть дисплей: :0 в приложениях на основе Electron
Фактическая точность этой статьи или раздела оспаривается.
Причина: почему это ломает приложения Electron? Для этого нужны ссылки на соответствующие темы (Обсудить в Talk:Wayland)
Убедитесь, что вы не установили GDK_BACKEND=wayland . Глобальная установка приведет к поломке приложений Electron.
Удаленный дисплей
- (20200206) wlroots (используется sway) предлагает серверную часть VNC через wayvnc, начиная с версии 0.10. Серверная часть RDP удалена [6].
- (20180401) mutter теперь включает удаленный рабочий стол во время компиляции, подробности см. в [7] и gnome-remote-desktop.
- В 2013 году произошло слияние FreeRDP с Weston, что стало возможным благодаря флагу компиляции. В пакете weston он включен, начиная с версии 6.0.0.
- waypipeAUR (или waypipe-gitAUR) — это прозрачный прокси-сервер для приложений Wayland с командой-оболочкой для запуска через SSH
Захват ввода в играх, удаленном рабочем столе и окнах ВМ
В отличие от Xorg, Wayland не допускает эксклюзивного захвата устройства ввода, также известного как активный или явный захват (например, клавиатуры, мыши), вместо этого он зависит от компоновщика Wayland для передачи сочетаний клавиш и ограничения устройства указателя окно приложения.
Это изменение в захвате ввода нарушает поведение текущих приложений, что означает:
- Комбинации горячих клавиш и модификаторы будут перехвачены компоновщиком и не будут отправлены на удаленный рабочий стол и в окна виртуальной машины.
- Указатель мыши не будет ограничен окном приложения, что может вызвать эффект параллакса, когда указатель мыши внутри окна виртуальной машины или удаленного рабочего стола смещается от указателя мыши хоста.
Wayland решает эту проблему, добавляя расширения протоколов для Wayland и XWayland. Поддержка этих расширений необходима для добавления в композиторы Wayland. В случае собственных клиентов Wayland используемые наборы инструментов для виджетов (например, GTK, Qt) должны поддерживать эти расширения или сами приложения, если набор инструментов для виджетов не используется. В случае приложений Xorg не требуется никаких изменений в приложениях или инструментарии виджетов, так как достаточно поддержки XWayland.
Эти расширения уже включены в wayland-protocols и поддерживаются xorg-xwayland.
Во-первых, оборудование должно быть проверено на совместимость с выбранным рабочим столом. В настоящее время поддерживаются буферные API-интерфейсы GBM и EGLStreams. Графические процессоры NVIDIA, использующие проприетарный драйвер, поддерживают EGLStreams, в то время как все остальные видеокарты и комбинации драйверов поддерживают GBM. Композитор Wayland должен явно поддерживать один или оба этих API, чтобы функционировать.
Сейчас GNOME (использующий Mutter) хорошо поддерживает GBM и EGLStreams. KDE Plasma (с использованием KWin) поддерживает GBM во всех версиях и EGLStreams, начиная с Plasma 5.16. Все остальные компоновщики поддерживают только GBM и не будут работать с используемым проприетарным драйвером NVIDIA.
Настольные компьютеры
GNOME (поддерживается начиная с 3.20+)
Сеанс Wayland встроен в GNOME, и он должен быть доступен в вашем диспетчере дисплеев, просто если GNOME установлен.
Поскольку это среда рабочего стола Debian по умолчанию, Wayland по умолчанию используется в Debian 10 и новее, а более старые версии по умолчанию используют Xorg.
KDE Plasma (поддерживается начиная с 5.4+)
KDE Plasma требует установки пакета плазменной рабочей области-wayland, отличного от стандартного. Этого часто достаточно для базовой функциональности, однако вам рекомендуется прочитать подробный раздел вики для KDE на Wayland, особенно если вы используете графический процессор NVIDIA.
Просветление (не поддерживается)
Гавайи (не поддерживается)
Корица (не поддерживается)
MATE (не поддерживается)
XFCE (не поддерживается)
Композиторы (поддерживается)
Оконные менеджеры и композиторы (не поддерживаются)
Инструменты
Введение
Приложения GTK3 и Qt 5, использующие системные библиотеки, по умолчанию должны автоматически использовать Wayland. Для некоторых из них, которые используют их статически связанные версии или явно отключают поддержку Wayland по разным причинам (например, KeePassXC), потребуется установить специальные флаги или переменные среды.
Приложения, использующие X11, будут нормально работать в Wayland через уровень совместимости Xwayland, однако могут возникать проблемы с вводом или другие ошибки. По возможности предпочтительнее использовать приложение в его собственном режиме Wayland.
Для поддержки создания снимков экрана, демонстрации экрана и совместного использования экрана, например, в веб-браузерах, в дополнение к одному из пакетов xdg-desktop-portal для рабочего стола требуется pipewire.
GTK3 (поддерживается начиная с 3.20+)
Переменная среды GDK_BACKEND, если для нее установлено значение "wayland", принудительно запустит приложение GTK3 с серверной частью Wayland. Точно так же установка переменной среды на «x11» заставит ее работать с серверной частью X11 (полезно для принуждения приложений к использованию Xwayland, у которых есть проблемы совместимости при работе в их собственном режиме Wayland).
Обратите внимание, что некоторые приложения Electron (Slack, Element, Discord и т. д.) или хром (861796) могут не работать, если для параметра GDK_BACKEND задано значение "wayland".
Беспорядок (поддерживается)
Переменная среды CLUTTER_BACKEND, если для нее задано значение "wayland", принудительно запускает приложения Clutter с серверной частью Wayland.
Qt (поддерживается с версии 5)
Пакет qtwayland5 установит соответствующий подключаемый модуль платформы, позволяющий приложениям Wayland работать с Qt.
Рекомендуется установить для переменной среды QT_QPA_PLATFORM значение "wayland;xcb", чтобы приложения предпочитали, чтобы Wayland использовала только X11 в качестве запасного варианта. Конечно, вы также можете указать, что это будет либо "wayland" или "xcb", если вы хотите использовать его принудительно.
Флаг -platform wayland также можно использовать как более простое средство, чтобы заставить большинство приложений Qt использовать серверную часть Wayland.
SDL1 (не поддерживается)
Инструментарий находится в режиме обслуживания и не получит поддержку Wayland. Существует совместимая с двоичным кодом SDL1 оболочка, которая использует SDL2 в качестве своего бэкэнда (libsdl12-compat), который является пакетом (985170), который может сделать любое приложение SDL1 прозрачным для поддержки Wayland. В противном случае приложения, использующие этот инструментарий, должны быть перенесены на SDL2. Кроме того, некоторые приложения SDL1 могут аварийно завершать работу, если они запущены с параметром SDL_VIDEODRIVER, установленным на "wayland".
SDL2 (поддерживается начиная с версии 2.0.2+)
Для игр, приложений или другого программного обеспечения, использующего SDL2 в качестве набора инструментов, задайте для переменной среды SDL_VIDEODRIVER значение "wayland". Обратите внимание, что делать это на уровне всей системы не рекомендуется, так как многие проприетарные приложения используют статически связанные версии SDL2, которые устарели и могут выйти из строя при принудительном использовании Wayland.
EFL (поддерживается)
GLFW (поддерживается с версии 3.2)
FLTK (не поддерживается)
В настоящее время этот набор инструментов не поддерживает Wayland. Ход выполнения отслеживается по адресу 984620.
Диспетчеры отображения
GDM (диспетчер отображения GNOME) будет автоматически использовать Wayland, если он поддерживается, за исключением случаев, когда используется проприетарный драйвер NVIDIA, и в этом случае он вернется к X11 из-за нестабильности.
Чтобы использовать серверную часть X11 по умолчанию, раскомментируйте строку WaylandEnable=false в файле /etc/gdm3/daemon.conf.
Wayland поддерживает сам SDDM, в настоящее время он везде использует X11 по умолчанию. Однако SDDM по-прежнему может запускать сеанс Wayland для настольных компьютеров.
Легкий DM
Надежды на то, что LightDM получит встроенную поддержку Wayland, мало, однако он все еще может запускать сеанс Wayland для настольных компьютеров.
Приложения
Chromium (поддерживается)
Upstream поддерживает Wayland через новую серверную часть Ozone. Чтобы включить его, запустите хром с параметром --ozone-platform=wayland или отредактируйте chrome://flags, как описано в конце 1003689.
Демонстрация экрана через PipeWire пока не поддерживается, отслеживается по номеру 954824.
Firefox (поддерживается)
Переменной среды MOZ_ENABLE_WAYLAND можно присвоить значение "1", чтобы принудительно использовать серверную часть Wayland.
LibreOffice (поддерживается, но не по умолчанию)
LibreOffice поддерживает Wayland через подключаемые модули System Abstraction Layer в таких пакетах, как libreoffice-gtk3, libreoffice-plasma, libreoiffice-kf5 и libreoffice-qt5.
По умолчанию он попытается определить текущую среду рабочего стола, для чего требуется установка соответствующей серверной части SAL. Если он не может обнаружить текущую среду рабочего стола, но обнаружит, что Wayland используется, по умолчанию будет использоваться бэкэнд GTK3, и произойдет ошибка сегментации, если подключаемый модуль не установлен.
Переменная среды SAL_USE_VCLPLUGIN может быть установлена в одно из значений "gtk3", "kf5" или "qt5", чтобы принудительно использовать определенный бэкенд, когда не используется реальная среда рабочего стола, например, при использовании голый композитор.
Программы Java (поддерживаются, начиная с OpenJDK 16?)
Начиная с OpenJDK 16, JRE может динамически загружать GTK3 (с поддержкой Wayland), судя по этому обсуждению, это может поддерживаться.
Переменной среды _JAVA_AWT_WM_NONREPARENTING можно присвоить значение "1", чтобы исправить неправильное поведение, когда приложение запускается с пустым экраном.
Emacs (частично поддерживается)
Поскольку Emacs не является настоящим приложением GTK, он по-прежнему общается с X11 и поэтому будет использовать XWayland.
Vim (частично поддерживается)
Как и в Emacs, прогресс отслеживается на 819954.
Чтобы протестировать Wayland, вам потребуется установить совместимый композитор. Композитор Wayland сочетает в себе роли оконного менеджера X, менеджера композитинга и сервера отображения. Большинство основных настольных компьютеров хорошо поддерживают Wayland, но в целях тестирования эталонной реализацией концепции является Weston.
Вы можете протестировать Weston непосредственно из обычного сеанса X, просто установив пакет weston и запустив weston в терминальном сеансе. Это откроет окно Wayland в вашем обычном X-сеансе, где вы сможете что-то проверить.
Вы также можете протестировать встроенный в GNOME компоновщик mutter Wayland напрямую:
Затем в этом окне появятся другие клиенты Wayland. Попробуйте, например, запустить gnome-терминал.
Если вы полностью переключились и хотите проверить, использует ли приложение встроенную поддержку Wayland или XWayland, проще всего запустить программу xeyes и проверить, отслеживают ли глаза курсор, когда он находится внутри окна приложения.
Для обратной совместимости любая программа X будет работать под управлением Xwayland. Установите пакет xwayland, если он не установлен на вашем рабочем столе.
Если вы используете компоновщик Weston, добавьте эти строки в ~/.config/weston.ini
Улучшения безопасности и производительности Wayland нельзя получить с помощью Xwayland.
X-ресурсы не загружаются
Это известная проблема. Еще в 2015 году было решено, что ресурсы загружаются слишком медленно, и это было исключено из основного сеанса GNOME. Дополнительную информацию см. в багзилле Redhat.
Обходной путь: запустите это вручную или настройте что-нибудь, чтобы оно запускалось автоматически при входе в сеанс.
Зачем нужен Wayland?
Wayland обеспечивает лучшую изоляцию между процессами: одно окно не может получать доступ к ресурсам из другого окна или вводить нажатия клавиш в другое окно.
Wayland также может стать быстрее за счет сокращения объема кода между процессами и оборудованием, делегирования многих функций самим процессам.
Для получения дополнительной информации см. также часто задаваемые вопросы по Wayland.
Приложения не могут обмениваться информацией друг с другом. так как мне скопировать и вставить?
Буфер обмена должен работать как обычно между приложениями X11 и Wayland в большинстве сеансов, однако компоновщик Wayland должен договориться об этом.
Я привык запускать различные программы (например, synaptic) от имени пользователя root в X-сессии. Как это будет работать в Wayland?
(На самом деле, synaptic был временно удален из buster, потому что он не работал под Wayland.)
Планируется разрешить приложениям X11, работающим с правами root, использовать XWayland, но собственные приложения Wayland необходимо преобразовать в часть с графическим интерфейсом и корневую часть.
Я запускаю различные программы по сети, например. через переадресацию ssh X11 или xhost. Как это будет работать в Wayland?
Переадресация SSH X11 работает, как и раньше, для приложений X11 через XWayland. Собственные приложения Wayland не пересылаются.
Взгляд в будущее протоколов Display Server
Эксперт по серверу отображения Дэниел Стоун объясняет, что на самом деле происходит с будущими протоколами графического отображения в Linux.
С точки зрения большинства пользователей Linux, Wayland — это проект, который в конечном итоге должен заменить X Window System (X). Совсем недавно вы, возможно, слышали, как Canonical Software решила запустить Mir, а не разрабатывать Wayland для Ubuntu.Это предел общих знаний, хотя это не останавливает людей, говорящих о Wayland и X (или «Почему все, что вы читали в комментариях LWN и Phoronix, не соответствует действительности»)».
Сегодня он является одним из основных участников Wayland, проекта, в котором участвуют около 25 активных участников и в значительной степени поддерживается Intel и работодателем Стоуна, Collabora.
Почему бы не остаться с X?
Многим разработчикам этот список помог систематизировать проблемы с X11. «Некоторые из этих проблем были просто явными проблемами с основным протоколом, — говорит Стоун, — но многие из них были связаны с тем фактом, что за 26 лет, прошедших с момента создания X11, все вокруг него изменилось. , как оборудование, так и приложения». Общеизвестно, что X является расширяемым, но поскольку на среднем сервере X используется в среднем 23 из 27 расширений, многие разработчики X считают, что «мы отодвинули это как можно дальше».
Следовательно, усилия по поддержанию работы X11 проходят точку убывающей отдачи. Хотя за последние несколько лет были внесены многочисленные улучшения, большинство простых улучшений уже реализовано. Как правило, сегодня «решение даже самых незначительных проблем, если бы [это] вообще было решаемо, потребовало бы чрезвычайно непропорционального количества усилий, что само по себе создало бы проблемы в будущем», — говорит Стоун.
Тем не менее, усилия последних нескольких лет продлили жизнь X, а работа над расширениями X11 стала общим источником вдохновения для Wayland. Особое вдохновение пришло из работы основателя Кристиана Хёгсберга над расширением прямого рендеринга DRI2).
Короче говоря, «Wayland был бы невозможен без последних нескольких лет разработки X», — говорит Стоун. Очистка расширений дала разработчикам более четкое представление о том, как должен работать идеальный сервер отображения.
Основное преимущество Wayland перед X заключается в том, что он начинает с нуля. Одна из основных причин сложности X заключается в том, что с годами его роль изменилась. Как говорит Стоун: «Изначально ваш X-сервер принимал поток команд рендеринга (прямоугольник здесь, изображение здесь, текст там) и выполнял всю растеризацию. По мере того как наши пользовательские интерфейсы (и, в частности, шрифты) становились все более сложными, оконные менеджеры в конце концов сами все отображали и просто отправляли клиентам огромные буферы размером с окно».
В результате сегодня X11 действует как «действительно ужасный» протокол связи между клиентом и оконным менеджером. Эта измененная роль работает, но может быть неудобной и часто приводит к «визуальным сбоям, таким как старое дрожание [дрожание] изменения размеров или мигание серо-белого окна, прежде чем оно заполнится». Хотя эти сбои можно исправить, исправления еще больше усложняют структуру и необходимое обслуживание.
Как и современный X11, Wayland — это протокол отображения, требующий компоновщика для получения инструкций (в случае с Wayland сейчас единственным компоновщиком является Уэстон, хотя это изменится с внедрением). Разница в том, что Wayland — это попытка воссоздать современное предназначение X11 с нуля, реорганизовав его и сосредоточив внимание на современных компьютерах, чтобы уменьшить ненужную сложность.
Другое важное отличие состоит в том, что X11 вслепую выполняет команды от клиента, а Wayland пытается повысить производительность, кодируя соответствующие реакции на более распространенные ситуации рендеринга.
"Возможно, лучший пример – всплывающее окно – говорит Стоун. «В X11 это реализовано путем указания серверу разместить окно в очень определенном месте и предоставить вашему клиенту весь ввод с клавиатуры и мыши со всего экрана, чтобы он мог закрыть окно, когда вы щелкаете за его пределами. И поскольку у нас нет возможности разорвать эти захваты ввода, ваши мультимедийные клавиши не работают, и заставка не может запуститься».
Напротив, Wayland включает конкретные инструкции о том, что делать с классом всплывающего окна, «и ожидается, что компоновщик закроет всплывающее окно, когда вы щелкнете за его пределами. Если композитор хочет вызвать заставку, он сделает это и закроет всплывающее окно. Наличие такого контекста очень, очень ценно».
Конечно, такие инструкции не могут предсказать правильное поведение для каждой ситуации. Например, на сенсорных экранах можно коснуться сразу нескольких областей экрана, и какой области (если таковая имеется) следует отдать приоритет, невозможно предугадать. По крайней мере временно, по словам Стоуна, «мы только что сделали все возможное, чтобы исключить эти проблемы из протокола, и мы посмотрим, что получится из различных реализаций, пытающихся извлечь из этого максимальную пользу».
Вывод? Созданный с нуля, Wayland меньше похож на лоскутное одеяло и, следовательно, с меньшей вероятностью пострадает от непредвиденных взаимодействий.Кроме того, в основных контекстах Wayland предлагает конкретные инструкции, которые заставляют его реагировать более разумно во многих рутинных ситуациях.
Было ли решение Canonical об отказе от Wayland основано на технических ограничениях?
Судя по комментариям Стоуна, решение Canonical оказало на Wayland меньшее влияние, чем может показаться посторонним. Хотя Марк Шаттлворт, основатель и лидер Canonical и Ubuntu, обещал поддержку Wayland в 2010 году, по словам Стоуна, «на самом деле они никогда не были вовлечены. Сумма их участия — прототип работы Криса Роджера над системными компоновщиками, которые мы использовали для реализации таких вещей, как быстрое переключение пользователей». В результате решение Canonical «на самом деле не имеет никакого значения».
Однако Стоун подчеркивает, что приведенные причины не имеют ничего общего с ограничениями Wayland. Первоначальные причины решения были неверными и были исправлены позже. Остальные причины сводятся к тому, что Wayland не разрабатывается с использованием разработки через тестирование, и что «они хотят иметь возможность заменить наш IPC на основе сокетов UNIX чем-то другим» — обе эти причины легко исправить, Стоун. говорит.
Кроме того, Canonical заявила, что хочет разработать проприетарные драйверы для Android и, возможно, для Valve. Тем не менее, Стоун утверждает, что «Wayland специально спроектирован так, чтобы его было проще реализовать в проприетарных драйверах (и мы делали это несколько раз). В рамках работы Collabora в прошлом году у нас был стек Wayland, работающий на Android. Кроме того, пока ни Valve, ни какой-либо проприетарный драйвер не заявили, что будут портировать на «Мир».
Стоун старается не говорить ничего больше, но вывод таков, что какими бы ни были причины решения Canonical, они не были техническими, поэтому, по его мнению, Wayland вполне способен делать то, на что Canonical жаловалась. не сделал или не смог сделать.
Когда Wayland будет готов к использованию?
Хотя большинство людей привыкли думать о Wayland как о незавершенной работе, проект уже реализован на ряде встроенных продуктов, телефонах и планшетах. «Для этих продуктов, где вы контролируете весь стек сверху донизу, очень легко использовать основной протокол Wayland и создавать свой собственный пользовательский интерфейс поверх пользовательских расширений».
Однако «для более универсального использования рабочего стола все еще есть несколько пробелов, которые будут действительно устранены только тогда, когда мы получим жизнеспособные порты основных сред рабочего стола». По словам Стоуна, «ряд разработчиков GNOME очень усердно работают, чтобы в этом году полностью портировать GNOME на Wayland», а KDE и Enlightenment также работают над поддержкой Wayland. «Я не собираюсь указывать дату в письменном виде, — говорит он, — [но] я думаю, что это будет довольно важный год для Wayland».
Независимо от того, как будут воспринимать Wayland в ближайшем будущем, Стоун отмечает, что в последние годы «драйверы, устанавливающие режимы ядра, приносят нам огромные преимущества и большую стабильность; теперь мы видим гораздо большую поддержку со стороны гораздо более широкой базы поставщиков, и Mesa не только чрезвычайно стабильна, но и начинает конкурировать по функциям. Раньше мы и не мечтали о такой базе для работы». Что касается Стоуна, то работа над X11, вдохновившая Wayland и саму Wayland, уже помогла улучшить графические дисплеи, даже если предстоит еще много работы.
Похожий контент
Графический протокол X11 явно устарел, но Wayland готов прийти на помощь.
Wayland и X11 — это две разные технологии серверов отображения, которые позволяют вам видеть свой рабочий стол и управлять окнами, создаваемыми каждым приложением и инструментом на рабочем столе. У них много общего, но есть и некоторые ключевые различия — в основном в способе передачи графических данных между приложением, оконным менеджером/композитором. В этом посте мы сравним Wayland с X11, рассмотрим преимущества каждого из них и узнаем больше об управлении окнами в Linux.
Что такое Wayland?
Проще говоря, Wayland — это протокол сервера отображения, призванный заменить X11. Это не приложение или загружаемая программа. Вместо этого это стандарт или спецификация, которую должны принять оконные менеджеры и настольные среды e12/1. Wayland спроектирован так, чтобы его было проще использовать, чем X11. X11 существует уже некоторое время и начинает показывать свой возраст из-за устаревшего кода, который раздувает систему.
Wayland пытается разработать новый способ управления вашей графической системой и того, как вы с ней взаимодействуете. Wayland также стремится упростить интеграцию в системы Linux с более простым кодом. В настоящее время Wayland поддерживается в среде рабочего стола GNOME и некоторых других платформах, таких как KWin от KDE. Он находился в разработке в течение некоторого времени, что заставило многих задуматься, действительно ли он станет реальной альтернативой X11.
Зачем использовать Wayland?
X11 (версия 11 X Server) используется с 1987 года, поэтому срок его действия уже давно истек. Полный список выпусков X можно найти на их веб-сайте. Реальность такова, что он разрабатывался в течение очень долгого периода времени, и в его коде все еще содержится много устаревших компонентов, которые очень затрудняют дальнейшую разработку.
Обучение кибербезопасности от CBT Nuggets
Частью этой устаревшей структуры является модель клиент/сервер, которая используется для визуализации окон. Давным-давно сервер обрабатывал все запросы на рендеринг, а рабочая станция рендеринга получала графику и окна, созданные сервером.
X11 — это в первую очередь протокол отображения, поэтому он был разработан для визуализации графики по сети. Вот почему можно перенаправлять сеансы X11 через SSH, предоставляя безопасный удаленный сеанс на графический рабочий стол на сетевом сервере или ПК.
Клиентские приложения должны взаимодействовать с сервером X11, прежде чем компоновщик (оконный менеджер) сможет сгенерировать окно, необходимое для правильной визуализации приложения. Это надежно, но очень медленно по современным стандартам и по сравнению с более новыми системами, такими как Wayland.
Wayland использует простой современный подход: рендеринг на стороне клиента. Это исключает любой компонент серверного типа, выступающий в качестве посредника, и позволяет приложению напрямую взаимодействовать с компоновщиком, для которого оно хочет отобразить окно. Теоретически это значительно ускоряет загрузку и технически упрощает реализацию благодаря упрощенной кодовой базе, которую предлагает Wayland.
Как работает Wayland?
Основная концепция модели процесса для Wayland заключается в том, что сервер и клиент объединены, что означает, что он напрямую взаимодействует с компоновщиком. Это означает, что приложения, которые хотят использовать Wayland, должны предоставить Wayland всю отображаемую информацию.
Эти параметры включают размер экрана окна, положение и состояние (минимизировано, развернуто и т. д.). Приложение само рисует окно, в котором оно будет запущено, вместо того, чтобы, как в случае с сервером X11, передавать эту информацию туда и обратно между приложением и компоновщиком. Этот процесс представляет собой аспект рендеринга на стороне клиента, о котором мы упоминали выше.
Однако это означает, что приложения, которые хотят поддерживать Wayland, должны быть обновлены или полностью переписаны как другая версия для поддержки этого нового стандарта. Это в определенной степени замедлило внедрение, но большинство популярных дистрибутивов Linux сделали его доступным как часть своей среды.
Зачем использовать Wayland вместо X11?
Первая и наиболее очевидная причина, по которой вы хотели бы использовать Wayland вместо X11, — это уменьшение задержки между открытием приложения и его отображением на рабочем столе. Это также делает такие задачи, как перетаскивание окон, изменение их размера или переключение в полноэкранный режим, более плавными и современными.
Более простой код, написанный для этого протокола, также дает ему преимущество в производительности по сравнению с X11. Если вы также учтете, что Wayland — более новый проект, у него было меньше времени на сбор устаревшего и раздутого кода, что делает его более гибким и реактивным, чем устаревший протокол X11.
Wayland также был разработан с учетом требований безопасности и не уязвим для тех же типов атак, что и X11, таких как эксплойт Unauthenticated Access, хотя в более поздних версиях он по большей части был исправлен.
Протокол, который использует Wayland, также упрощает дизайнерам и разработчикам создание кроссплатформенных приложений, которые всегда страдали от проблем с рендерингом в Linux из-за проблем совместимости между различными версиями GTK или Qt.
Кто создал Wayland и кто его поддерживает?
Wayland был создан в рамках проекта Wayland. Это другой объект, чем X11, созданный Open Group как расширение дизайна XFree86.
- Fedora 25+
- Debian Stretch (нестабильный)
- Gentoo Linux
- openSUSE 42.x+
- Котел магии.
Когда выйдет Wayland?
Альфа-версия Wayland 1.19.0 была выпущена 27 января 2021 г. Большая часть оборудования, которое поддерживает Wayland, — это драйверы Intel с открытым исходным кодом или драйверы AMD с открытым исходным кодом. Raspberry Pi и Android поддерживают Wayland без дополнительных драйверов.
Что может остановить выпуск Wayland или замедлить его внедрение
Wayland уже давно находится в разработке, поэтому вполне возможно, что непредвиденные проблемы могут еще больше задержать его. Он выпустил несколько улучшений и в настоящее время публикует их на этом веб-сайте, когда они представляют новые версии.
В настоящее время нет рабочего проекта, чтобы сделать его стандартом.Это означает, что Wayland должен быть одобрен Linux Foundation и другими организациями, которые могут помочь в разработке, тестировании и продвижении его использования, прежде чем он станет официальным стандартом.
Поскольку Wayland является протоколом, он использует совершенно иной подход по сравнению с традиционными программируемыми приложениями X11, что также препятствует его внедрению. В настоящее время нет официального проекта стандарта, который сделал бы Wayland стандартом, а это означает, что может пройти некоторое время, прежде чем он станет общепринятой альтернативой X11.
Окончательный анализ: что лучше?
В настоящее время X11, вероятно, по-прежнему является лучшим выбором только с точки зрения совместимости. X11 используется уже очень давно по вычислительным стандартам, он надежен и стабилен. Однако эта стабильность достигается за счет производительности. Если вы используете производственные системы или системы, использующие устаревшие приложения, то X11 будет для вас лучшим выбором.
Если вы хотите поэкспериментировать и попробовать что-то новое, Wayland — отличный способ сделать это. Он легкий и не требует столько ресурсов в вашей системе, как X11, хотя современные системы, как правило, прекрасно справляются с X11.
Есть также множество новых функций, с которыми вы можете поэкспериментировать, таких как совместное использование графического процессора или специальные композиторы Wayland, которые можно попробовать. Все сводится к тому, что вы хотите делать со своей графической системой, в какой среде вы будете запускать свою систему, а также от совместимости между вашими приложениями и Wayland.
В конечном итоге вам следует попробовать установить свежую ОС с X11 и Wayland, а затем протестировать ее самостоятельно. Это, безусловно, лучший способ увидеть, что лучше всего подходит для ваших конкретных потребностей. Правильного ответа нет, потому что и Wayland, и X11 — отличные варианты со своими плюсами и минусами, которые делают их уникальными по-разному. Выбор за вами.
Не являетесь подписчиком CBT Nuggets? Начните бесплатную неделю прямо сейчас.
CBT Nuggets предлагает все необходимое для изучения новых ИТ-навыков и продвижения по карьерной лестнице — неограниченное количество видео-тренингов и практических экзаменов, виртуальные лаборатории, подтвержденное обучение с помощью видео-викторин, коучинг по вопросам ответственности и доступ к нашему эксклюзивному сообществу. ИТ-специалистов.
Читайте также: