Обновлено: 15.08.2024
Wayland — это современная графическая платформа, используемая в ОС Linux и пришедшая на замену устаревшей X11. Wayland служит фундаментом рабочей среды KDE Plasma, обеспечивая взаимодействие пользователя с графическими приложениями. Начиная с Plasma 6.0, сеанс Wayland рекомендуется для использования по умолчанию.
В этой статье рассматриваются некоторые технические аспекты Wayland, предлагаются решения возможных проблем и опциональные настройки, которые могут улучшить пользовательский опыт.
Выбор графической платформы важен, поскольку во многом определяет, как ваше устройство взаимодействует с экранами и устройствами ввода, как отображаются приложения и компоненты самой рабочей среды, как выглядит управление окнами. В то же время, рядовые пользователи о нём не задумываются до тех пор, пока не сталкиваются с определёнными проблемами. До недавнего времени основой всех графических окружений Linux служила оконная система X11, и отказ от неё в пользу Wayland может вызвать непонимание.
Главная причина отказа от X11 — это её необратимое устаревание. Вопреки распространённому мифу, X11 не соответствовала философии UNIX, а, напротив, представляла собой монолитное решение, отвечавшее за всё и сразу. Программный код X11 огромен, сложен и хрупок, что привело к фактической остановке её разработки много лет назад. Прекращение поддержки настолько центрального компонента, как сервер оконной системы, — это большая проблема, так как означает отсутствие исправлений ошибок и уязвимостей, а также отставание от меняющихся потребностей пользователей.
В поисках решения, сопровождающие ключевых рабочих сред для Linux остановились на наборе протоколов Wayland. Минималистичная архитектура Wayland была задумана разработчиками X11, стремившимися избежать повторения своих ошибок. Wayland безопаснее, эффективнее, производительнее и надёжнее, он гораздо лучше подходит для современных устройств, чем X11, придуманная в 80-е годы до появления видеокарт.
Важно понимать, что нет никакого противостояния между X11 и Wayland: над ними работают участники одной и той же организации, FreeDesktop. Среди них существует консенсус о прекращении поддержки X11. Переход на Wayland — это естественный этап развития настольных и мобильных систем с Linux.
Подробнее: https://vk.com/@kde_ru-ngraham-about-wayland
Начиная с 2018 года, развитие сеанса X11 в KDE Plasma было прекращено. Выпуск Plasma 6.0 в 2024 году перевёл сеанс Wayland в статус рекомендуемого для большинства пользователей. Это не означает, что в Wayland не осталось недочётов: они присутствуют, как и в любом другом крупном программном обеспечении. Так, они есть и в X11 — в сопоставимом количестве. Отличие в том, что Wayland активно развивается, и можно ожидать, что его недостатки и дальше будут устраняться.
Поддержка X11 пока сохранена, и дистрибутивы Linux могут самостоятельно решать, какой сеанс предлагать пользователям после установки. Так, Fedora выбрала Wayland ещё в Plasma 5.27; Arch Linux и KDE Neon следуют рекомендациям разработчиков KDE и используют Wayland с Plasma 6.0. В openSUSE, Kubuntu и других дистрибутивах централизованный переход может произойти позже, но пользователи могут осуществить его вручную в любой момент — ознакомьтесь с документацией вашего дистрибутива.
Проверить, используете ли вы Wayland, можно в приложении Информация о системе. Выбрать используемый сеанс — X11 или Wayland — можно на экране входа в систему (например, в левом нижнем углу SDDM).
Общие рекомендации:
iio-sensor-proxy
)Ознакомьтесь с актуальным списком проблем; ниже разобраны некоторые из них.
Этот функционал отсутствует в диспетчере окон KWin и под X11, но там это маскируется тем, что многие приложения самостоятельно запоминают положения своих окон.
В сеансе Wayland приложения не могут выбирать, где именно на экране будет расположено их окно — за это отвечает компоновщик, учитывающий предпочтения пользователя (Параметры системы > Диспетчер окон > Дополнительно > Размещение нового окна). Как только в KWin будет реализовано сохранение расположений окон, оно заработает для всех приложений сразу.
Работа над этим отслеживается здесь. Технические подробности можно прочитать здесь.
За сохранение размеров окон и состояния распахнутости отвечают сами приложения.
Некоторые приложения пока не реализуют протокол, позволяющий передавать фокус от одного приложения другому. Для его работы требуется поддержка как передающим, так и принимающим приложениями — сообщите о проблеме их разработчикам.
Приложения KDE поддерживают необходимый протокол, поэтому если вы наблюдаете проблему с передачей фокуса между двумя приложениями KDE, сообщите нам о ней.
Поддержка переподключения к компоновщику, перезапустившемуся после аварийного завершения, должна быть реализована в фреймворках, используемых приложениями. Работа над этим ведётся.
Пример: откреплённые видео, проигрываемые Firefox. Для полноценного решения этой проблемы необходим дополнительный протокол. В качестве временного решения можно создавать для проблемных окон правила KWin (Параметры системы > Диспетчер окон > Особые параметры окон) со свойством «Слой».
Работа над этой функцией ведётся.
Например, при перетаскивании файла в Dolphin для его копирования Ctrl нужно зажать до начала перетаскивания. Это исправлено в Qt 6.8.
Помните, что замеченных вами проблем может не быть у других пользователей — сообщайте о них в систему учёта ошибок.
Актуальные версии Plasma совместимы с новыми проприетарными (закрытыми) драйверами NVIDIA.
Требования:
libnvidia-egl-wayland1
(название в вашем дистрибутиве может отличаться).sudo cat /sys/module/nvidia_drm/parameters/modeset
выводит Y
. Если это не так, следуйте документации вашего дистрибутива (например, Arch Linux) для установки параметра nvidia_drm.modeset=1
. При настройке через файл конфигурации udev он записывается как options nvidia_drm modeset=1
.Открытый драйвер Nouveau работает хуже закрытого с современными видеокартами от NVIDIA, поэтому использовать его рекомендуется только в случае окончания поддержки вашей видеокарты со стороны производителя. Идёт работа над новым открытым драйвером NVK с поддержкой современных моделей, но он ещё не доступен в большинстве дистрибутивов.
Известные проблемы при использовании проприетарного драйвера:
OGL_DEDICATED_HW_STATE_PER_CONTEXT=ENABLE_ROBUST
.Если вашей проблемы нет в списке, сообщите о ней.
По сообщениям пользователей, использование устаревшего драйвера radeon
приводит к низкой частоте кадров в сеансе Wayland. Используйте современный драйвер AMDGPU.
С AMDGPU каких-либо специфичных проблем при использовании Wayland быть не должно.
Популярные фреймворки Qt и GTK и библиотека SDL предоставляют встроенную поддержку Wayland, поэтому большинство приложений, построенных с их использованием, работают в сеансе Wayland без особых проблем. Для запуска приложений и игр, пока не поддерживающих Wayland, используется слой совместимости XWayland. Все ваши программы, за исключением тех, что предназначены для взаимодействия конкретно с оконной системой X11, должны работать в сеансе Wayland, будь то нативно (благодаря «родной» поддержке) или через слой совместимости. Таким образом, переход на Wayland не должен радикально ограничить ваш выбор программного обеспечения.
Для этих программ наличие «родной» поддержки Wayland имеет решающее значение.
Утилита Spectacle от KDE поддерживает создание как снимков, так и видеозаписей, и лучше всего подходит для Plasma Wayland. Сторонние программы, на которые стоит обратить внимание: Flameshot, OBS Studio.
xwaylandvideobridge
(его должен предустанавливать ваш дистрибутив).Нет никаких ограничений при использовании сеанса Wayland для управления другими компьютерами.
Для управления компьютерами, работающими в сеансе Wayland, требуется соответствующая поддержка со стороны используемой вами для подключения программы. Так, начиная с версии 6.1 рабочая среда Plasma включает встроенный RDP-сервер, совместимый с Wayland. Из совместимых сторонних программ можно отметить TeamViewer, RustDesk, NoMachine и Krfb (VNC).
В Chrome Remote Desktop поддержка Wayland находится в разработке.
В Plasma встроен виджет «Выбор цвета». Если вы не можете найти его в списке виджетов, проверьте, что установлен пакет kdeplasma-addons
(название в вашем дистрибутиве может немного отличаться).
Некоторые приложения, ещё не предлагающие «родную» поддержку Wayland, вроде Discord, реализуют обработку глобальных комбинаций клавиш за счёт «прослушивания» ввода пользователя, предназначенного для других приложений. Чтобы разрешить таким приложениям получать доступ к этой информации, используйте страницу «Поддержка устаревших приложений X11» Параметров системы.
Если вы не знаете, что такое I-Bus, просто удалите его из системы: он не нужен для работы с Plasma Wayland.
Если метод ввода вам нужен для работы с китайским, японским или корейским языками, используйте Fcitx 5 — он лучше поддерживает Wayland, чем I-Bus.
Для замены xdotool
можно использовать ydotool
и kdotool
.
Попробуйте одну из этих инструкций:
Маловероятно, что вы полагались на сетевую прозрачность X11: современные приложения опираются на разделяемую память (SHM), DRI2 или DRI3 и D-Bus, что лишает их свойства сетевой прозрачности. Wayland не предоставляет поддержку сетевой прозрачности, считая её выходящей за рамки ответственности протокола. Используйте механизмы удалённого доступа или Waypipe.
Некоторые приложения можно дополнительно настроить для улучшения пользовательского опыта.
В Google Chrome, Opera, Vivaldi и других браузерах на основе Chromium «родная» поддержка Wayland включается установкой параметра chrome://flags/#ozone-platform-hint
(вставьте в адресную строку) в значение Auto
(не Default
), либо флагом командной строки.
Несмотря на формально «экспериментальный» статус, поддержка Wayland в Chromium вполне стабильна. В частности, она решает проблему с группировкой веб-приложений, открытых в отдельных окнах, в панели задач Plasma.
Начиная с версии 121 веб-браузер Mozilla Firefox использует нативную поддержку Wayland без дополнительной конфигурации. В более старых версиях она включалась переменной среды MOZ_ENABLE_WAYLAND=1
.
В приложениях, построенных с использованием Electron — Visual Studio Code, Spotify, Joplin — поддержка Wayland включается переменной среды ELECTRON_OZONE_PLATFORM_HINT=auto
или флагом командной строки.
В играх, созданных на основе Godot версии 4.3 и новее, тестовая поддержка Wayland включается флагом --display-driver wayland
. См. также информацию для разработчиков игр.
Начиная с версии 2024.2 пользователи программы раннего доступа (EAP) могут включить в продуктах JetBrains семейства IntelliJ нативную поддержку Wayland. Пока она носит тестовый характер — в частности, недостаёт поддержки перетаскивания и системного оформления окон.
Для запуска словаря GoldenDict на выделенном слове можно назначить комбинацию клавиш на вызов команды goldendict $(wl-paste -n -p)
(требуется пакет wl-clipboard
).
Редактор переводов Lokalize плохо работает в сеансе Wayland из-за программной ошибки в самом приложении. Чтобы принудительно запустить его через XWayland, используйте переменную среды:
QT_QPA_PLATFORM=xcb lokalize
Экспериментальная поддержка Wayland есть в слое совместимости с программами для Windows Wine 9.0.
Да, выбрать используемый сеанс — X11 или Wayland — можно в любой момент на экране входа в систему (например, в левом нижнем углу SDDM). Более того, установка пакетов, обеспечивающих работу Wayland, никак не влияет на работу X11.
В случае KDE Plasma, в роли компоновщика (сервера) Wayland выступает диспетчер окон KWin. В списке процессов он значится как kwin_wayland
. Никакого отдельного «процесса Wayland», аналогичного Xorg
в X11, не существует.
kwin_wayland
?Да, это можно сделать командой kwin_wayland --replace
. Учитывайте, что на данный момент не все приложения умеют продолжать работу после перезапуска компоновщика, и вы можете потерять несохранённые данные.
В данный момент это не поддерживается, так как для корректной работы Plasma в сеансе Wayland необходим специфичный функционал, доступный только в KWin.
В Wayland нет аналога xorg.conf
, который был бы применим сразу ко всем компоновщикам (серверам) Wayland. Так, настройка диспетчера окон KWin, используемого Plasma, выполняется через Параметры системы.
В случае KWin:
journalctl --user-unit plasma-kwin_wayland
В любой строке поиска, использующей KRunner, — например, в меню запуска приложений, — введите kwin
и выберите «Открыть отладочную консоль KWin». В открывшемся окне в списке «Окна X11» будут перечислены все окна, принадлежащие XWayland.
Из терминала отладочную консоль KWin можно запустить так:
qdbus6 org.kde.KWin /KWin showDebugConsole
В сеансе Wayland компоновка окон (compositing) является неотъемлемой частью работы компоновщика, а не расширением, как в X11. Отключить её нельзя, но это и не принесло бы никакого выигрыша в производительности.
Подойдёт любой популярный вариант, причём не обязательно, чтобы сам экран входа использовал Wayland. Разработчики KDE рекомендуют использовать SDDM.
Прямого аналога xrandr
, подходящего для всех реализаций Wayland, пока нет. С KWin поставляется утилита kscreen-doctor
, но по возможности стоит использовать графический интерфейс настройки экранов.
xkill
?KWin предоставляет действие «Принудительно закрыть окно». По умолчанию оно вызывается комбинацией клавиш Meta+Ctrl+Esc, настроить можно в Параметрах системы (Комбинации клавиш > KWin).
Это происходит, когда у окна приложения нарушено сопоставление с файлом ярлыка (.desktop
), что является ошибкой в самом приложении или при его сборке в вашем дистрибутиве (1, 2). Сообщите о проблеме разработчику приложения с указанием информации о системе.
Комфортный размер интерфейса достигается настройкой коэффициента масштабирования экрана, а не снижением разрешения. Список же доступных разрешений определяется драйвером вашей видеокарты.
Во-первых, важно понимать, что это не ожидаемое поведение: Wayland не предъявляет к аппаратной части более высоких требований, чем X11.
Среди возможных причин:
llvmpipe
.OGL_DEDICATED_HW_STATE_PER_CONTEXT=ENABLE_ROBUST
.Если вашей ситуации нет в списке, сообщите о ней.
Параметры системы > Экран и монитор > Устаревшие приложения (X11): убедитесь, что выбрано «Масштабирование средствами приложений».
В случае проблем с аппаратным ускорением графики, принудительно включить программную отрисовку в Mesa можно установкой переменной среды LIBGL_ALWAYS_SOFTWARE=true
в файле /etc/environment
с последующим перезапуском системы.
llvmpipe
.Сообщите об этой проблеме разработчикам Plasma. Возможно, проблема в самом приложении или используемых им библиотеках. Если приложение предлагает вместо перетаскивания воспользоваться системным диалогом выбора файла, вы можете перетащить файл в этот диалог для его выбора.
Используемый по умолчанию в VirtualBox графический драйвер, VMSVGA
, ограничен и не поддерживает в должной мере требования Wayland.
VBoxSVGA
.PipeWire предназначен для обработки не только звуковых, но и видеопотоков. В сеансе Wayland он используется для захвата изображения с экрана, что нужно, например, для записи и демонстрации экрана и для показа миниатюр окон в панели задач. В этой роли PipeWire вполне может сосуществовать с PulseAudio.
Параметры системы > Клавиатура > Раскладки > снимите флажок «Экранные уведомления при смене раскладки». Кстати, оно должно было отображаться и под X11, но не работало.
Нашли ошибку, неточность или устаревшие сведения? Предложите исправление.