Wayland

Обновлено: 01.05.2024

Wayland — это современная графическая платформа, используемая в ОС Linux и пришедшая на замену устаревшей X11. Wayland служит фундаментом рабочей среды KDE Plasma, обеспечивая взаимодействие пользователя с графическими приложениями. Начиная с Plasma 6.0, сеанс Wayland рекомендуется для использования по умолчанию.

В этой статье рассматриваются некоторые технические аспекты 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

А как с Wayland в KDE?

Начиная с 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).

Общие рекомендации:

Преимущества Plasma Wayland

Общие

Сенсор

Экраны

Видеокарты

Устройства ввода

Недостатки по сравнению с X11

Ознакомьтесь с актуальным списком проблем; ниже разобраны некоторые из них.

Не запоминаются позиции окон после их закрытия

Этот функционал отсутствует в диспетчере окон KWin и под X11, но там это маскируется тем, что многие приложения самостоятельно запоминают положения своих окон.

В сеансе Wayland приложения не могут выбирать, где именно на экране будет расположено их окно — за это отвечает компоновщик, учитывающий предпочтения пользователя (Параметры системы > Диспетчер окон > Дополнительно > Размещение нового окна). Как только в KWin будет реализовано сохранение расположений окон, оно заработает для всех приложений сразу.

Работа над этим отслеживается здесь. Технические подробности можно прочитать здесь.

За сохранение размеров окон и состояния распахнутости отвечают сами приложения.

Окно не получает фокус при активации из другого приложения

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

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

Некоторые приложения не переживают сбои KWin

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

Окна «Картинка в картинке» не поддерживаются поверх других окон

Пример: откреплённые видео, проигрываемые Firefox. Для полноценного решения этой проблемы необходим дополнительный протокол. В качестве временного решения можно создавать для проблемных окон правила KWin (Параметры системы > Диспетчер окон > Особые параметры окон) со свойством «Слой».

Не работает ограничение кольца переключения раскладок (Spare layouts)

Работа над этой функцией ведётся.

Клавиши-модификаторы применяются только до начала перетаскивания файла

Например, при перетаскивании файла в Dolphin для его копирования Ctrl нужно зажать до начала перетаскивания. Это будет исправлено в Qt.

Моей проблемы нет в полном списке

Помните, что замеченных вами проблем может не быть у других пользователей — сообщайте о них в систему учёта ошибок.

Совместимость с видеокартами

NVIDIA

Актуальные версии Plasma совместимы с новыми проприетарными (закрытыми) драйверами NVIDIA.

Требования:

Открытый драйвер Nouveau работает хуже закрытого с современными видеокартами от NVIDIA, поэтому использовать его рекомендуется только в случае окончания поддержки вашей видеокарты со стороны производителя. Идёт работа над новым открытым драйвером NVK с поддержкой современных моделей, но он ещё не доступен в большинстве дистрибутивов.

Известные проблемы при использовании проприетарного драйвера:

Если вашей проблемы нет в списке, сообщите о ней.

AMD

По сообщениям пользователей, использование устаревшего драйвера radeon приводит к низкой частоте кадров в сеансе Wayland. Используйте современный драйвер AMDGPU.

С AMDGPU каких-либо специфичных проблем при использовании Wayland быть не должно.

Совместимость приложений

Популярные фреймворки Qt и GTK и библиотека SDL предоставляют встроенную поддержку Wayland, поэтому большинство приложений, построенных с их использованием, работают в сеансе Wayland без особых проблем. Для запуска приложений и игр, пока не поддерживающих Wayland, используется слой совместимости XWayland. Все ваши программы, за исключением тех, что предназначены для взаимодействия конкретно с оконной системой X11, должны работать в сеансе Wayland, будь то нативно (благодаря «родной» поддержке) или через слой совместимости. Таким образом, переход на Wayland не должен радикально ограничить ваш выбор программного обеспечения.

Особые категории ПО

Для этих программ наличие «родной» поддержки Wayland имеет решающее значение.

Создание снимков и видеозаписей экрана

Утилита Spectacle от KDE поддерживает создание как снимков, так и видеозаписей, и лучше всего подходит для Plasma Wayland. Сторонние программы, на которые стоит обратить внимание: Flameshot, OBS Studio.

Демонстрация экрана

Удалённый доступ к компьютеру

Нет никаких ограничений при использовании сеанса Wayland для управления другими компьютерами.

Для управления компьютерами, использующими Wayland, требуется соответствующая поддержка со стороны используемой вами программы. В данный момент она есть у TeamViewer, RustDesk, NoMachine и Krfb (VNC).

В Chrome Remote Desktop поддержка Wayland в разработке.

Разработчики Plasma готовят к выпуску встроенную поддержку удалённого доступа по протоколу RDP.

Выбор цвета с экрана (пипетка)

В Plasma встроен виджет «Выбор цвета». Если вы не можете найти его в списке виджетов, проверьте, что установлен пакет kdeplasma-addons (название в вашем дистрибутиве может немного отличаться).

Глобальные комбинации клавиш внутри приложений XWayland

Некоторые приложения, ещё не предлагающие «родную» поддержку Wayland, вроде Discord, реализуют обработку глобальных комбинаций клавиш за счёт «прослушивания» ввода пользователя, предназначенного для других приложений. Чтобы разрешить таким приложениям получать доступ к этой информации, используйте страницу «Поддержка устаревших приложений X11» Параметров системы.

Методы ввода (IME)

Если вы не знаете, что такое I-Bus, просто удалите его из системы: он не нужен для работы с Plasma Wayland.

Если метод ввода вам нужен для работы с китайским, японским или корейским языками, используйте Fcitx 5 — он лучше поддерживает Wayland, чем I-Bus.

Эмуляция ввода

Для замены xdotool можно использовать ydotool и kdotool.

Агент SSH

Попробуйте одну из этих инструкций:

Сетевая прозрачность

Маловероятно, что вы полагались на сетевую прозрачность X11: современные приложения опираются на разделяемую память (SHM), DRI2 или DRI3 и D-Bus, что лишает их свойства сетевой прозрачности. Wayland не предоставляет поддержку сетевой прозрачности, считая её выходящей за рамки ответственности протокола. Используйте механизмы удалённого доступа или Waypipe.

Настройка приложений

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

Веб-браузеры на основе Chromium

В Google Chrome, Opera, Vivaldi и других браузерах на основе Chromium «родная» поддержка Wayland включается установкой параметра chrome://flags/#ozone-platform-hint (вставьте в адресную строку) в значение Auto (не Default), либо флагом командной строки.

Несмотря на формально «экспериментальный» статус, поддержка Wayland в Chromium вполне стабильна. В частности, она решает проблему с группировкой веб-приложений, открытых в отдельных окнах, в панели задач Plasma.

Веб-браузер Firefox

Начиная с версии 121 веб-браузер Mozilla Firefox использует нативную поддержку Wayland без дополнительной конфигурации. В более старых версиях она включалась переменной среды MOZ_ENABLE_WAYLAND=1.

Приложения на основе Electron

В приложениях, построенных с использованием Electron — Visual Studio Code, Spotify, Joplin — поддержка Wayland включается переменной среды ELECTRON_OZONE_PLATFORM_HINT=auto или флагом командной строки.

GoldenDict

Для запуска словаря GoldenDict на выделенном слове можно назначить комбинацию клавиш на вызов команды goldendict $(wl-paste -n -p) (требуется пакет wl-clipboard).

Lokalize

Редактор переводов Lokalize плохо работает в сеансе Wayland из-за программной ошибки в самом приложении. Чтобы принудительно запустить его через XWayland, используйте переменную среды:

QT_QPA_PLATFORM=xcb lokalize

В разработке

Тестовая поддержка Wayland есть в слое совместимости с программами для Windows Wine 9.0, средах разработки семейства IntelliJ, игровом движке Godot 4.3.

Часто задаваемые вопросы

Могу ли я вернуться на X11, если установлю Wayland?

Да, выбрать используемый сеанс — X11 или Wayland — можно в любой момент на экране входа в систему (например, в левом нижнем углу SDDM). Более того, установка пакетов, обеспечивающих работу Wayland, никак не влияет на работу X11.

Как называется процесс Wayland?

В случае KDE Plasma, в роли компоновщика (сервера) Wayland выступает диспетчер окон KWin. В списке процессов он значится как kwin_wayland. Никакого отдельного «процесса Wayland», аналогичного Xorg в X11, не существует.

Можно ли перезапустить kwin_wayland?

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

Можно ли использовать с Plasma Wayland другой диспетчер окон вместо KWin?

В данный момент это не поддерживается, так как для корректной работы Plasma в сеансе Wayland необходим специфичный функционал, доступный только в KWin.

Где находится файл конфигурации Wayland?

В Wayland нет аналога xorg.conf, который был бы применим сразу ко всем компоновщикам (серверам) Wayland. Так, настройка диспетчера окон KWin, используемого Plasma, выполняется через Параметры системы.

Где посмотреть журнал Wayland?

В случае KWin:

journalctl --user-unit plasma-kwin_wayland

Как определить, использует ли приложение XWayland?

В любой строке поиска, использующей KRunner, — например, в меню запуска приложений, — введите kwin и выберите «Открыть отладочную консоль KWin». В открывшемся окне в списке «Окна X11» будут перечислены все окна, принадлежащие XWayland.

Из терминала отладочную консоль KWin можно запустить так:

qdbus6 org.kde.KWin /KWin showDebugConsole

Как отключить композитное расширение в сеансе Wayland?

В сеансе Wayland компоновка окон (compositing) является неотъемлемой частью работы компоновщика, а не расширением, как в X11. Отключить её нельзя, но это и не принесло бы никакого выигрыша в производительности.

Какие экраны входа в систему (display managers) совместимы с Plasma Wayland?

Подойдёт любой популярный вариант, причём не обязательно, чтобы сам экран входа использовал Wayland. Разработчики KDE рекомендуют использовать SDDM.

Как настроить экраны из командной строки?

Прямого аналога xrandr, подходящего для всех реализаций Wayland, пока нет. С KWin поставляется утилита kscreen-doctor, но по возможности стоит использовать графический интерфейс настройки экранов.

Есть ли аналог xkill?

KWin предоставляет действие «Принудительно закрыть окно». По умолчанию оно вызывается комбинацией клавиш Meta+Ctrl+Esc, настроить можно в Параметрах системы (Комбинации клавиш > KWin).

Почему в панели задач используется логотип Wayland вместо значка приложения?

Это происходит, когда у окна приложения нарушено сопоставление с файлом ярлыка (.desktop), что является ошибкой в самом приложении или при его сборке в вашем дистрибутиве (1, 2). Сообщите о проблеме разработчику приложения с указанием информации о системе.

В списке доступных разрешений экрана только самое высокое, как сделать интерфейс крупнее?

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

Wayland тормозит, что делать?

Во-первых, важно понимать, что это не ожидаемое поведение: Wayland не предъявляет к аппаратной части более высоких требований, чем X11.

Среди возможных причин:

Если вашей ситуации нет в списке, сообщите о ней.

Почему приложения, работающие через XWayland, выглядят нечётко?

Параметры системы > Экран и монитор > Устаревшие приложения (X11): убедитесь, что выбрано «Масштабирование средствами приложений».

Как включить программную отрисовку (software rendering)?

В случае проблем с аппаратным ускорением графики, принудительно включить программную отрисовку в Mesa можно установкой переменной среды LIBGL_ALWAYS_SOFTWARE=true в файле /etc/environment с последующим перезапуском системы.

Как понять, что используется программная отрисовка?

В окно приложения не получается перетащить файл, хотя под X11 это работало

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

Почему Wayland не работает в виртуальной машине?

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

Почему при установке Plasma Wayland в зависимостях значится PipeWire, если я использую PulseAudio?

PipeWire предназначен для обработки не только звуковых, но и видеопотоков. В сеансе Wayland он используется для захвата изображения с экрана, что нужно, например, для записи и демонстрации экрана и для показа миниатюр окон в панели задач. В этой роли PipeWire вполне может сосуществовать с PulseAudio.

Как убрать экранное уведомление о переключении раскладки клавиатуры?

Параметры системы > Клавиатура > Раскладки > снимите флажок «Экранные уведомления при смене раскладки». Кстати, оно должно было отображаться и под X11, но не работало.

Нашли ошибку, неточность или устаревшие сведения? Предложите исправление.

Назад