Устранение проблем с Wayland
|
Эта страница была автоматически преобразована из Wiki. Она была очищена для публикации здесь, на портале документации Fedora, но ещё не была проверена на техническую точность. Она, вероятно,
Рецензии на техническую точность очень приветствуются. Если вы хотите помочь, см. файл README в репозитории исходного кода для инструкций. Pull request принимаются на https://forge.fedoraproject.org/docs/quick-docs После того как вы исправите эту страницу, удалите это уведомление. |
Wayland задуман как более простая замена X11. Wayland значительно меняет архитектуру рабочего стола Linux. В отличие от X11, в Wayland нет выделенного автономного сервера. То, что раньше делалось между приложением, его инструментарием, X-сервером и оконным менеджером, теперь распределено между приложением, его инструментарием и композитором Wayland, который управляет композитингом, вводом, управлением окнами и т. д. Приложения и инструментарии теперь отвечают за собственный рендеринг и оформление (оформление на стороне клиента), поэтому любые проблемы обычно находятся между инструментарием (например, GTK+) и композитором Wayland (например, mutter).
Вы можете прочитать больше о Wayland на вики-странице GNOME Wayland initiative. Вы можете прочитать больше о текущем состоянии функций Wayland на странице Wayland features.
Определение проблем Wayland
Вы работаете в сеансе Wayland?
В GNOME на экране входа есть кнопка с шестерёнкой, которую можно использовать для входа либо в сеанс Wayland (называется просто GNOME, это вариант по умолчанию), либо в устаревший сеанс X11 (называется GNOME on Xorg). Если у вас учётная запись без пароля, вы не увидите значок шестерёнки; он отображается только при появлении приглашения ввести пароль. Используйте кнопку с шестерёнкой, чтобы определить тип сеанса, в который вы входите. Если вы хотите запустить сеанс другим способом, прочитайте продвинутые методики работы с Wayland.

В KDE есть поддержка запуска вложенного сеанса Wayland внутри сеанса X11. Вам нужно установить пакет kwin-wayland, а затем следовать этому руководству. Похоже, что в настоящий момент нет поддержки запуска полного сеанса Wayland из коробки.
Другие среды рабочего стола в настоящее время не способны запускать сеанс Wayland.
Определение типа сеанса во время выполнения
Если вы хотите узнать, какой тип сеанса вы используете прямо сейчас, не выходя и не входя снова, вы можете воспользоваться несколькими способами, чтобы это выяснить:
-
В сеансе Wayland должна быть установлена переменная
WAYLAND_DISPLAY, в сеансе X11 её быть не должно:$ echo $WAYLAND_DISPLAY wayland-0 -
loginctlможет дать вам эту информацию. Сначала выполнитеloginctlи найдите номер вашего сеанса (это должно быть целое число, с вашим именем пользователя и назначенным местом). Затем посмотрите на тип сеанса (x11илиwayland):$ loginctl show-session <YOUR_NUMBER> -p Type Type=x11
Если вы работаете в сеансе X11, а не в сеансе Wayland, ваши проблемы не связаны с Wayland. Это ошибка либо в конкретном приложении, либо в самом X11, см. How to debug Xorg problems.
Работает ли ваше приложение на Wayland нативно или использует XWayland (слой совместимости с X11)?
Важно знать, является ли проблемное приложение нативным приложением Wayland или работает через XWayland, который позволяет устаревшим приложениям по-прежнему работать поверх Xorg-сервера, но отображаться в сеансе Wayland.
Существует несколько способов определить, использует ли приложение Wayland или XWayland:
-
Выберите окно с помощью
xwininfoилиxprop. Выполните:$ xwininfoВаш указатель мыши должен измениться на крестик в X11, в Wayland он, похоже, не меняется. Теперь щёлкните в любом месте внутри окна приложения, которое хотите проверить. Если команда
xwininfoзавершается (она должна вывести свойства окна в терминал), тестируемое приложение работает под XWayland. Если ничего не происходит (командаxwininfoвсё ещё ждёт, пока вы выберете окно), тестируемое приложение работает под Wayland (вы можете закрыть команду с помощьюCtrl+C). + Вы также можете использовать командуxprop, следуя тем же инструкциям. -
Приложения XWayland перечислены в выводе
xlsclients. Выполните:$ xlsclientsОднако этот список не всегда полностью надёжен, некоторые приложения могут отсутствовать.
-
Вы можете попробовать запустить приложение, сняв переменную окружения
DISPLAY:$ DISPLAY='' commandЕсли приложение работает нормально, оно, вероятно, использует Wayland нативно.
-
Вы можете запустить приложение с переменной окружения
WAYLAND_DEBUG=1:$ WAYLAND_DEBUG=1 commandЕсли вы видите массу вывода (по сравнению со стандартным запуском), приложение использует Wayland нативно.
-
В GNOME вы можете определить это с помощью встроенного инструмента Looking Glass. Нажмите
Alt+F2, выполните:lgнажмите на Windows в правом верхнем углу инструмента и выберите нужное окно, щёлкнув по его имени. Если вы видите
MetaWindowWaylandв первой строке, это приложение работает под Wayland. Если вы видитеMetaWindowX11в первой строке, это приложение работает под X11.
Если вы определили, что проблема в приложении XWayland, попробуйте воспроизвести её в стандартном сеансе X11. Если она возникает и там, это не связано с Wayland, это ошибка либо в конкретном приложении, либо в Xorg-сервере, см. How to debug Xorg problems. Если проблема возникает только под XWayland, но не в сеансе X11, о ней всё равно следует сообщать против Xorg-сервера ( пакета), потому что XWayland включён в него (как подпакет xorg-x11-server-Xwayland).
Определение проблемного компонента
Сам Wayland является протоколом, и проблема редко заключается в самом протоколе. Скорее, проблема, вероятно, в приложении или его инструментарии либо в композиторе.
Наиболее известные инструментарии, готовые к Wayland:
-
GTK+ 3 — приложения по умолчанию в среде GNOME используют почти исключительно этот инструментарий. Обратите внимание, что приложения, использующие более старый GTK+ 2, не готовы к Wayland.
-
QT 5 — многие приложения в среде KDE используют этот инструментарий. Обратите внимание, что приложения, использующие более старый QT 4, не готовы к Wayland.
Наиболее известные композиторы Wayland:
Тестирование под разными композиторами
Если вы столкнулись с проблемой в приложении Wayland, очень полезно знать, присутствует ли проблема только под одним композитором (в этом случае это, вероятно, ошибка композитора) или под несколькими композиторами (в этом случае это, вероятно, ошибка приложения/инструментария).
Пожалуйста, запустите сеанс с эталонным композитором Weston и попробуйте воспроизвести проблему. Вы можете запустить Weston либо как вложенное окно, либо как полный сеанс. Сначала установите пакет (много полезной информации можно прочитать на его странице руководства):
$ sudo dnf install weston
Затем создайте файл конфигурации, который укажет, что вы хотите включить поддержку XWayland в своих сеансах weston. Создайте ~/.config/weston.ini со следующим содержимым:
[core] + xwayland=true
Теперь вы можете запустить weston либо как вложенное окно, либо как полный сеанс.
-
Чтобы запустить вложенное окно Weston, выполните из терминала:
$ westonДолжно открыться окно Weston, и вы увидите значок терминала в его левом верхнем углу. Используйте этот значок, чтобы запустить терминал, из которого вы сможете запускать приложения и другие команды с использованием Weston. Выйдите из композитора, просто закрыв окно или завершив процесс
weston. -
Чтобы запустить полный сеанс Weston (не вложенный в другой сеанс X11 или Wayland), переключитесь на свободный VT (Ctrl+Alt+Fx) и выполните:
$ weston-launchВы можете выйти из сеанса, нажав сочетание клавиш Control+Alt+Backspace.
Если вы можете воспроизвести проблему с Weston, заведите задачу против приложения или его инструментария (gtk+, qt и т. д.). В противном случае заведите задачу против композитора, который использует ваша среда (mutter, kwin и т. д.). Если проблема возникает только с приложениями XWayland, но не с нативными приложениями Wayland, сообщите об ошибке против Xorg-сервера.
Сообщение о проблеме
Использование актуального программного обеспечения
Прежде чем сообщать об ошибке, пожалуйста, убедитесь, что вы используете последнее доступное программное обеспечение. Убедитесь, что нет ожидающих системных обновлений:
$ sudo dnf update
Если они есть (и доступные обновления выглядят правдоподобно связанными с компонентами, с которыми у вас проблемы), пожалуйста, обновите систему и проверьте, сохраняется ли проблема или была исправлена.
Поиск похожих отчётов
Чтобы избежать дублирующихся отчётов, а также не тратить своё время на отладку того, что, возможно, уже кто-то отладил, пожалуйста, сначала поищите среди существующих отчётов. Наиболее заметные проблемы или опасения перечислены в Известные проблемы, частые жалобы, фундаментальные изменения. Если вы не видите её там, вам нужно искать глубже. Связанные с Wayland проблемы вы, скорее всего, найдёте здесь:
-
[https://bugzilla.gnome.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=NEEDINFO&component=Backend%3A%20Wayland&component=wayland&list_id=74680&order=changeddate%20DESC%2Cbug_status%2Cpriority%2Cassigned_to%2Cbug_id&product=gtk%2B&product=mutter&query_based_on=&query_format=advanced mutter/wayland и GTK+/wayland в GNOME Bugzilla]
-
Трекер проблем, связанных с Wayland, в Red Hat Bugzilla (трекер KDE)
-
[https://bugzilla.redhat.com/buglist.cgi?classification=Fedora&component=wayland&list_id=4118943&order=changeddate%20DESC%2Cbug_status%2Cpriority%2Cassigned_to%2Cbug_id&product=Fedora&query_based_on=&query_format=advanced&resolution=--- Wayland в Red Hat Bugzilla]
-
[https://bugs.freedesktop.org/buglist.cgi?list_id=561109&order=changeddate%20DESC%2Cbug_status%2Cpriority%2Cassigned_to%2Cbug_id&product=Wayland&query_based_on=&query_format=advanced&resolution=--- Wayland в Freedesktop Bugzilla]
-
Поиск в Google
Заведение ошибки
После того как вы определили, против какого компонента (скорее всего) сообщать о проблеме, и не нашли существующего отчёта о ней, есть несколько мест, где можно о ней сообщить:
-
Red Hat Bugzilla — рекомендуется для проблем, связанных с самим wayland, композитором weston, не-GNOME приложениями, проектом KDE, инструментарием QT
-
GNOME Bugzilla — рекомендуется для проблем, связанных с композитором mutter, инструментарием GTK+, приложениями проекта GNOME (большинство приложений по умолчанию в Fedora Workstation)
При сообщении о проблеме, пожалуйста, сделайте так, чтобы ваш отчёт блокировал наш трекер, чтобы у нас была хорошая общая картина того, что сломано в разных компонентах. В вашем отчёте об ошибке установите Blocks: WaylandRelated или Blocks: KDEWaylandRelated (возможно, вам потребуется включить отображение расширенных полей, чтобы увидеть поле Blocks:). Это заставит его блокировать один из этих трекеров в зависимости от того, где вы сообщили об ошибке:
Информация, которую следует включить в отчёт об ошибке
-
Системный журнал. Поскольку нет уникального сервера, как X11-сервер, большая часть важной информации будет поступать от композитора Wayland и приложений. Всё это в настоящее время должно быть в системном журнале. Вы можете сохранить полный журнал с момента последней загрузки следующим образом:
$ journalctl -ab > journal.logВы также можете отредактировать файл и в соответствии с временными метками удалить всё, что было задолго до возникновения проблемы, чтобы сделать журнал более кратким. * Если ваша система дала сбой или перестала отвечать, так что вам пришлось её перезагрузить, вы можете вместо этого посмотреть журнал предыдущей загрузки с помощью
journalctl -a -b -1. -
Отладочный вывод Wayland. Если вы можете воспроизвести проблему, пожалуйста, запустите проблемное приложение следующим образом:
$ WAYLAND_DEBUG=1 command |& tee debug.outВы должны увидеть массу печатаемого вывода. Он будет включать всё взаимодействие между приложением и композитором.
-
Информация о том, возникает ли та же проблема при запуске приложения с использованием XWayland вместо Wayland. Для приложений GTK+ 3 вы можете заставить нативное приложение Wayland работать с использованием XWayland следующим образом:
$ GDK_BACKEND=x11 commandИ наоборот, вы также можете заставить приложение XWayland работать с использованием Wayland (в случае, если у него только экспериментальная поддержка):
$ GDK_BACKEND=wayland commandПриложения QT 5 по умолчанию работают с XWayland. Вы можете принудительно включить бэкенд Wayland:
$ QT_QPA_PLATFORM=wayland-egl commandВсё это применимо только к приложениям GTK+ 3 и QT 5.
-
Описание оборудования полезно для некоторых ошибок, связанных с оборудованием:
$ lspci -nn > lspci.out -
Версии пакетов. Вы можете собрать список и версии всех установленных пакетов с помощью:
$ rpm -qa | sort > packages.out -
Обычная информация, которая должна быть в каждом отчёте об ошибке.
Отладка gnome-shell
Если gnome-shell зависает и перестаёт отвечать, очень полезно получить трассировку стека его процесса и приложить её к отчёту. Если это происходит, переключитесь на другой VT, если возможно (Ctrl+Alt+F3–F7), или войдите по ssh. Сначала установите отладочные символы:
$ sudo dnf debuginfo-install `rpm -q gnome-shell`
Затем присоедините отладчик gdb к вашему процессу gnome-shell:
$ gdb -p `pgrep -U $(id -un) -x gnome-shell`
...
(gdb) set logging on
(gdb) thread apply all backtrace full
... нажимайте Enter, пока не отобразится вся трассировка ...
(gdb) quit
Трассировка должна быть сохранена в файле gdb.txt.
Отладка mutter
Вы можете отлаживать mutter (используемый в gnome-shell), установив его переменные окружения. Их нужно установить до запуска gnome-shell, поэтому, если вы хотите войти в GNOME из GDM, вам нужно создать скрипт-обёртку, вызываемый из desktop-файла в /usr/share/wayland-sessions.
FIXME: Было бы полезно разместить здесь скрипт-обёртку и desktop-файл.
Известные проблемы, частые жалобы, фундаментальные изменения
Здесь мы перечислим громкие проблемы, которые, как известно, сломаны, ещё не реализованы или намеренно ведут себя иначе, чем обычные приложения X11. Также, пожалуйста, посмотрите на Wayland features, где перечислены все текущие отсутствующие или находящиеся в разработке функции и их подробности.
Чтобы увидеть все известные проблемы, посмотрите отчёты Bugzilla, как упомянуто в Поиск похожих отчётов.
Графические приложения нельзя запускать от имени root из терминала
Невозможно запустить графические приложения под учётной записью root из терминала при использовании su или sudo. Приложения, использующие polkit для запроса прав администратора только для определённых операций и только при необходимости, не затронуты (они не запускаются как root сразу). Обсуждение лучшего подхода продолжается, см. bug 1274451 и "On running gui applications as root" thread in fedora-devel mailing list.
Многие известные утилиты X11 не работают
Опытные пользователи знакомы с широким спектром утилит, связанных с X11, таких как xkill, xrandr, xdotool, xsel. Эти инструменты не будут работать в сеансе Wayland или будут работать только с приложениями XWayland, но не с приложениями Wayland. Некоторые инструменты могут иметь замену, позволяющую выполнять аналогичные задачи.
FIXME: добавить несколько готовых к Wayland замен для популярных инструментов X11
Игры и другие приложения не могут изменять разрешение монитора
Приложение больше не может изменить разрешение монитора. Обычно это делалось играми для повышения производительности. Игры на основе Wayland будут использовать другой подход — масштабирование своего вывода. Но для игр X11 (работающих через XWayland) это решение недоступно. Это приводит к различным типам поведения в зависимости от того, как написана игра — игра может быть зафиксирована в разрешении рабочего стола, или отображаться как маленькое центрированное изображение с чёрными полосами вокруг него, или падать при запуске, или что-то другое. См. bug 1289714.
Для некоторых игр возможным обходным решением является ручная установка пользовательского разрешения монитора перед запуском игры, если это действительно необходимо. Однако это поможет не всегда.
Захват экрана недоступен с обычными приложениями
Одной из особенностей Wayland является его дизайн безопасности, который помогает защитить пользователя от вредоносных приложений. Приложения больше не могут видеть всё на экране и шпионить за вами. Но это также означает, что вы не можете запустить обычное приложение (например, shutter или gtk-recordmydesktop) и использовать его для создания скриншота или скринкаста рабочего стола — оно увидит только своё собственное окно, но ничего другого (или может сразу упасть). Для выполнения этих действий необходимо использовать системные (доверенные) приложения.
В GNOME вы можете использовать инструмент Screenshot (доступен в обзоре, по горячей клавише Printscreen или как команда gnome-screenshot) для создания скриншота всего рабочего стола или конкретного окна. Вы можете нажать сочетание клавиш Ctrl+Alt+Shift+R, чтобы начать видеозапись всего рабочего стола (остановите её, нажав то же сочетание клавиш снова; есть индикатор в правом верхнем углу, или она автоматически останавливается через 30 секунд по умолчанию) и найти скринкаст в ~/Videos. Для скринкаста вы также можете использовать расширение gnome-shell EasyScreenCast.
Указатель мыши тормозит/дёргается под нагрузкой
Если ваш компьютер находится под нагрузкой, движение указателя мыши может перестать быть плавным и начать тормозить (застревать на месте на короткое время, затем мгновенно перескакивать в другое место). Это, вероятно, более заметно на медленных системах/системах с меньшим числом ядер ЦП. См. bug 745032.
События клавиатуры иногда быстро повторяются
Существует редкая проблема, когда вы нажимаете клавишу, чтобы ввести букву, и видите несколько копий введённой буквы. См. bug 757942 и bug 777693.
Не все клавиши можно отправить на удалённый рабочий стол или виртуальную машину
Некоторые приложения перенаправляют весь ввод, включая системные клавиши/сочетания клавиш, такие как или , на удалённую систему. Это в основном просмотрщики удалённого рабочего стола, такие как vncviewer, или менеджеры виртуальных машин, такие как virt-manager или boxes. В Wayland некоторые из этих сочетаний клавиш не могут быть перехвачены и поэтому используются в хост-системе, а не в удалённой/гостевой системе. См. bug 1285770.
Want to help? Learn how to contribute to Fedora Docs ›