Wayland (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Wayland
. Дата последней синхронизации: 16 февраля 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Kernel mode setting (Русский)
Xorg (Русский)
Screen capture#Wayland
Wayland
- протокол для организации графического сервера. В отличие от
X Window System
, Wayland не имеет API отрисовки и соответственно ей не занимается. Подробнее
о отличиях Wayland от Xorg в Википедии (англ.)
.
Серверы отображения, использующие протокол Wayland, называются
композиторами
, потому что они похожи на
композитные менеджеры окон
. Ниже указан
список композиторов Wayland
.
Для обратной совместимости с устаревшими приложениями
X11
используется
Xwayland
, который предоставляет X-сервер для Wayland.
Требования
Большинство Wayland-композиторов будут работать только на системах, использующих
Kernel mode setting (Русский)
. Wayland не предоставляет графического окружения; для этого вам нужен композитор (смотрите следующий раздел) или среда рабочего стола, в составе которой есть композитор (например,
GNOME
или
KDE
).
Чтобы драйвер GPU и Wayland могли работать вместе, они должны поддерживать одинаковый буферный API. Есть два основных:
GBM
и
EGLStreams
.
Buffer API
Поддержка GPU драйвером
Поддержка Wayland композиторами
GBM
Все, кроме
NVIDIA
< 495*
Все
EGLStreams
NVIDIA
GNOME
,
Weston
(со сторонним патчем)
* NVIDIA ≥ 495 поддерживает одновременно EGLStreams и GBM.
[1]
Чтобы использовать GBM в качестве бэкенда, установите следующие
переменные окружения
:
GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia
Композиторы
О разнице между
фреймовыми
и
стековыми
оконными менеджерами можно прочитать здесь:
Оконный менеджер#Типы
.
Фреймовые
Cagebreak
— Основан на cage, вдохновлен
ratpoison
.
https://github.com/project-repo/cagebreak
||
cagebreak
AUR
dwl
—
dwm
-подобный композитор Wayland на основе wlroots.
https://github.com/djpohly/dwl
||
dwl
AUR
japokwm
— Динамический компоновщик листов Wayland, основанный на создании макетов на основе wlroots.
https://github.com/werererer/japokwm
||
japokwm-git
AUR
Qtile
— Полнофункциональный плиточный оконный менеджер и компоновщик Wayland, написанный и настроенный на Python.
https://github.com/qtile/qtile
||
qtile
river
— Композитор Wayland с динамическим тайлингом, вдохновленный dwm и
bspwm (Русский)
.
https://github.com/ifreund/river
||
river
Sway
—
i3
-совместимый Wayland-композитор на основе wlroots.
https://github.com/swaywm/sway
||
sway
Velox
— Простой оконный менеджер на основе swc, вдохновленный dwm и
xmonad
.
https://github.com/michaelforney/velox
||
velox-git
AUR
Vivarium
— С динамический плитками Wayland, использующий wlroots, с семантикой рабочего стола, вдохновленной
xmonad (Русский)
.
https://github.com/inclement/vivarium
||
vivarium-git
AUR
[
ссылка недействительна
: package not found]
Стековые
Enlightenment
— Смотрите
Enlightenment#Manually
. Подробнее:
[2]
[3]
https://www.enlightenment.org/
||
enlightenment
hikari
— Основанный на wlroots композитор, вдохновленный
cwm
, который активно разрабатывается для FreeBSD, но также поддерживает  Linux.
https://hikari.acmelabs.space/
[
устаревшая ссылка
2024-11-06 ⓘ]
||
hikari
AUR
KDE
KWin
— Смотрите
KDE (Русский)#Запуск Plasma
.
https://userbase.kde.org/KWin
||
kwin
labwc
— Основанный на wlroots композитор, вдохновленный Openbox.
https://github.com/johanmalm/labwc
||
labwc-git
AUR
Mutter
— Смотрите
GNOME (Русский)#Запуск GNOME
.
https://gitlab.gnome.org/GNOME/mutter
||
mutter
wayfire
— 3D композитор, вдохновленный
Compiz
и основанный на wlroots.
https://wayfire.org/
||
wayfire
Weston
— Эталонная реализация композитора Wayland.
https://gitlab.freedesktop.org/wayland/weston
||
weston
wio
— Композитор на основе wlroots, призванный воспроизвести внешний вид рабочего стола Rio в Plan 9..
https://wio-project.org/
[
устаревшая ссылка
2022-09-23 ⓘ]
||
wio-wl
AUR
Другие
Cage
— Отображает одно полноэкранное приложение, например для киоска.
https://www.hjdskes.nl/projects/cage/
||
cage
Некоторые из них имеют возможность использовать
экранный менеджер
. Проверьте
/usr/share/wayland-sessions/
название_композитора
.desktop
.
Менеджеры входа
Ниже перечислены менеджеров дисплеем, который поддерживает работу Wayland. Столбец тип указывает, поддерживает ли экранный менеджер работу на Wayland или нет.
Название
Тип
Описание
emptty
Запускается в консоли
Простой диспетчер отображения CLI на TTY с поддержкой X и Wayland.
GDM
Запускается на Wayland
Экранный менеджер рабочего окружения
GNOME
greetd
Демон входа в систему
Минималистичный менеджер входа, поддерживает консольный и графический режим
lemurs
Запускается в консоли
Менеджер отображения TUI для Linux, написанный на Rust.
LightDM
Запускается на Xorg
Кросс-десктопный Экранный менеджер
Ly
Запускается в консоли
Консольный экранный менеджер, написаный на C
SDDM
Запускется на Xorg
Экранный менеджер на основе QML.
tbsm
Запускается в консоли
Простой запуск сеанса в CLI, написанный на чистом bash.
Библиотеки графического интерфейса
Смотрите подробности на
официальном сайте
[
устаревшая ссылка
2024-10-12 ⓘ]
GTK
В пакетах
gtk3
и
gtk4
уже включена поддержка Wayland. GTK будет использовать Wayland по умолчанию, но вы можете изменить это, установив
переменную окружения
GDK_BACKEND=x11
, чтобы использовать Xwayland.
Qt
Чтобы включить поддержку Wayland в
Qt
5 или 6, установите пакет
qt5-wayland
или
qt6-wayland
и установите
переменную окружения
QT_QPA_PLATFORM=wayland
. Чтобы заставить приложение использовать Xwayland установите
переменную окружения
QT_QPA_PLATFORM=xcb
. Это может быть необходимо для некоторых проприетарных приложений, которые не используют системную реализацию Qt, к примеру
zoom
AUR
.
На некоторых композиторах, например
sway
, приложения Qt, работающие нативно, могут иметь неработающую функциональность. Например,
KeepassXC
не удастся свернуть в трей. Это можно решить, установив
qt5ct
и прописав
QT_QPA_PLATFORMTHEME=qt5ct
перед запуском приложения.
Clutter
Инструментарий Clutter имеет поддержку Wayland. Она включена в пакет
clutter
AUR
.
Чтобы запустить приложение Clutter на Wayland, установите
CLUTTER_BACKEND=wayland
.
SDL2
Для запуска SDL2 приложения на Wayland, выставите
переменную окружения
SDL_VIDEODRIVER=wayland
.
Примечание
Большинство проприетарных игр включают в себя старые версии SDL, которые не поддерживают Wayland. Чтобы заставить приложение работать под Xwayland, используйте
SDL_VIDEODRIVER=x11
.
GLEW
Пакет
glew-wayland
AUR
[
ссылка недействительна
: package not found]
в настоящее время по-прежнему не работает со многими приложениями на основе GLEW, поэтому единственный вариант — использовать
glew
с Xwayland. Смотрите
FS#62713
.
EFL
EFL полностью поддерживает Wayland. Для запуска EFL в Wayland смотрите
страницу проекта Wayland
[
устаревшая ссылка
2024-10-12 ⓘ]
.
winit
Winit — это библиотека для работы с окнами в Rust. По умолчанию использует бэкенд Wayland, но его можно переопределить на Xwayland, изменив переменную окружения:
WINIT_UNIX_BACKEND=x11
.
Electron
Чтобы использовать
electron
-приложения через Wayland, создайте или отредактируйте файл
${XDG_CONFIG_HOME}/electron-flags.conf
чтобы добавить следующие параметры (один параметр на строку).
~/.config/electron-flags.conf
--enable-features=UseOzonePlatform
--ozone-platform=wayland
Обратите внимание, что более старые версии Electron используют отдельные файлы
electron-flags.conf
. Например, если у вас установлен пакет
electron12
, вы можете захотеть сделать
$ ln -s ~/.config/electron-flags.conf ~/.config/electron12-flags.conf
из вашего каталога
${XDG_CONFIG_HOME}
(или создать отдельный
${XDG_CONFIG_HOME}/electron12-flags.conf
файл, если вы хотите, чтобы разные версии
electron
использовали разные настройки).
Совет
Вместо глобальных изменения флагов Electron можно отредактировать
ярлыки приложений
.
Java
OpenJDK — реализация платформы
Java
с открытым исходным кодом — ещё не имеет встроенной поддержки Wayland.
До
Wakefield
, который является проектом, направленным на реализацию Wayland в OpenJDK, можно сейчас использовать Xwayland.
Xwayland
Xwayland
[
устаревшая ссылка
2024-10-12 ⓘ]
— это 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, поверхности, события ввода, содержимое буфера обмена и многое другое.
$ qdbus org.kde.KWin /KWin org.kde.KWin.showDebugConsole
Визуальное обнаружение приложений Xwayland
Чтобы определить, запущено ли приложение через Xwayland, вы можете запустить
extramaus
AUR
.
Наведите указатель мыши на окно приложения. Если красный курсор двигается, приложение работает через Xwayland.
Или вы можете использовать
xorg-xeyes
и посмотреть, двигаются ли глаза при перемещении курсора по окну приложения.
Переназначение клавиш клавиатуры
Модель безопасности Wayland не позволяет другим программам, кроме композитора, захватывать необработанный ввод с клавиатуры. Некоторые композиторы поддерживают переназначение клавиш (например,
mutter
через
gnome-tweaks
), но многие этого не умеют. Программы
evremap-git
AUR
,
evdevremapkeys-git
AUR
, и
kbct-git
AUR
могут обойти это, захватив клавиатуру перед композитором и передав ему измененный ввод с клавиатуры.
Решение проблем
Цветовая коррекция
Читайте
Backlight (Русский)#Цветовая коррекция
.
Графические артефакты в GNOME
Пользователи gnome-shell могут испытывать проблемы при переходе с
Xorg
на Wayland. Чаще всего корнем проблемы является установленная переменная
CLUTTER_PAINT=disable-clipped-redraws:disable-culling
. Уберите её из
/etc/environment
.
Cannot open display::0 в приложениях на основе Electron
Приложения, написаные на
Electron
(например, Atom или Discord)
не будут работать
на Wayland. Установите переменную
GDK_BACKEND=x11
для запуска на Xwayland.
Удалённый доступ к ПК
(20200206)
wlroots
[
ссылка недействительна
: replaced by
wlroots0.18
]
(используется в
sway
) имеет поддержку VNC через пакет
wayvnc
.
(20180401)
mutter
теперь имеет поддержку удалённого рабочего стола через пакет
gnome-remote-desktop
. Читайте
[4]
для деталей.
В 2013 году произошло слияние FreeRDP с Weston, включенное с помощью флага компиляции. Пакет
weston
включен, начиная с версии 6.0.0.
waypipe
(или
waypipe-git
AUR
) - прозрачный прокси для запуска Wayland приложений через оболочку
SSH
Захват ввода в играх, удалённом рабочем столе и окнах виртуальных машин
В отличие от Xorg, Wayland не допускает эксклюзивного захвата устройства ввода, также известного как активный или явный захват (например,
клавиатура
,
мышь
), вместо этого он зависит от композитора Wayland для передачи сочетаний клавиш и ограничения мыши в окне приложения.
Это изменение в захвате ввода нарушает поведение текущих приложений, что означает:
Комбинации горячих клавиш и модификаторы будут перехвачены композитором и не будут отправлены на удаленный рабочий стол и окна виртуальной машины.
Указатель мыши не будет ограничен окном приложения, что может вызвать эффект параллакса, когда положение указателя мыши внутри окна виртуальной машины или удаленного рабочего стола смещено от указателя мыши хоста.
Wayland решает эту проблему, добавляя расширения протокола для Wayland и Xwayland. Поддержка этих расширений необходима для добавления в композиторы Wayland. В случае нативных клиентов Wayland используемые наборы библиотеки виджетов (например, GTK, Qt) должны поддерживать эти расширения или сами приложения, если библиотеки виджетов не используется. В случае приложений Xorg не требуется никаких изменений в приложениях или библиотеки виджетов, поскольку достаточно поддержки Xwayland.
Эти расширения уже включены в
wayland-protocols
и поддерживается в
xorg-xwayland
.
Связанные расширения:
Xwayland протокол захвата клавиатуры
Протокол блокировки сочетаний клавиш в композиторе
Протокол относительного указателя
Протокол ограничения указателя
Поддерживающие композиторы Wayland:
Mutter, композитор
GNOME
с версии 3.28
wlroots поддерживает относительный и ограниченый указатель
Поддерживающие библиотеки виджетов:
GTK с версии 3.22.18.
Темы GTK не работают
Смотрите
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
.
Смотрите также
Wayland документация онлайн (англ.)
Официальный репозиторий Wayland Git
Fedora:How to debug Wayland problems
Мы уже Wayland?
Потрясающие проекты Wayland
Cursor themes (Русский)
i3 Руководство по миграции — основные приложения X11, используемые на i3 с альтернативами для Wayland (англ.)
Проводник Wayland — лучший способ читать документацию Wayland (англ.)