Вопрос или проблема
Я только что установил последнюю версию Kali Linux на свой ноутбук, который основан на Debian 7 (oldstable). Затем я обновил всю систему до Debian 8.
Я всегда хотел Wayland вместо X11, поэтому установил необходимые пакеты. Затем создал минимальную конфигурацию в ~./config/weston.ini
. Теперь, с экрана входа в Gnome:
Я могу загрузиться в Gnome на Wayland
или LXDE
(среди прочего). Первое работает с очень ограниченным успехом, а второе (LXDE) почти идеально, хотя панель требует настройки (мне нужно разобраться с freedesktop).
В любом случае, в LXDE графический интерфейс более отзывчивый, чем на oldstable, и, возможно, так же быстр, как и при работе с Windows 7. Я был доволен.
Но я хочу знать, связано ли это со всеми обновлениями библиотек/модулей с Debian 7 до 8 или с использованием Wayland (если я действительно использую Wayland вообще). Я просмотрел htop и нашел запущенный процесс /usr/bin/Xorg
и ни одного процесса с именем “wayland”. Так на чем же я сейчас работаю?
Получите ID сеанса, выполнив команду:
loginctl
Это покажет вам что-то вроде:
SESSION UID USER SEAT TTY
c2 1000 вашепользователь seat0
1 сеанс(ов) в списке.
В этом примере c2
— это ID сеанса.
Затем:
loginctl show-session <SESSION_ID> -p Type
Если вы хотите получить все это в одной команде:
loginctl show-session $(awk '/tty/ {print $1}' <(loginctl)) -p Type | awk -F= '{print $2}'
Используйте тот, который соответствует вашему имени пользователя.
Смотрите:
https://fedoraproject.org/wiki/How_to_debug_Wayland_problems
Итак, для меня это:
$ loginctl show-session 2 -p Type
Type=wayland
Как узнать, используется ли Wayland или X11?
на системах X11:
$ echo $XDG_SESSION_TYPE
x11
на некоторых системах wayland:
$ echo $XDG_SESSION_TYPE
wayland
Обратите внимание, что для выполнения этой проверки вам нужен дисплейный менеджер, иначе вышеуказанная команда может вернуть tty
.
редактировать: Смотрите комментарии и используйте ответ antismap, чтобы охватить больше случаев.
Это работает на Fedora и Ubuntu 18.04.5 LTS:
loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type
Мне больше всего нравится ответ Ayush, но я хотел бы сказать, что ответ Andreas можно сделать в одной строке:
loginctl show-session "$XDG_SESSION_ID" -p Type
Вы также можете добавить --value
, чтобы убрать префикс Type=
.
Самое простое, что можно сделать, это проверить, установлена ли переменная WAYLAND_DISPLAY
или нет.
Определите тип сеанса с помощью POSIX-синтаксиса без подшелла:
printf 'Сеанс: %s\n' "${DISPLAY:+X11}${WAYLAND_DISPLAY:+WAYLAND}"
Альтернативная обработка всех 4 состояний:
case $((0${DISPLAY:+1} | 0${WAYLAND_DISPLAY:+2})) in
1) session=X11 ;;
2) session=WAYLAND ;;
3) session='и X11, и WAYLAND' ;;
*) session='ни X11, ни WAYLAND' ;;
esac
printf 'Сеанс: %s\n' "$session"
Введите команду
ps aux | grep gnome-shell
/usr/bin/gnome-shell --wayland --display-server
Если Wayland активен.
Если вы используете Gnome, выполните команду r
в меню Alt+F2. Это перезапустит окружение (gnome-shell
) в Xorg (без потери окон и процессов), но в Wayland вы получите сообщение “Перезапуск недоступен в Wayland”.
Самый простой способ выяснить, используете ли вы Wayland или X11, — открыть Настройки, прокрутить вниз до О программе, а затем снова прокрутить вниз до Системы окон, и эта информация будет там.
В своем собственном поиске ответа на этот вопрос, прочитав некоторые из этих “Ответов” и, наконец, выяснив, какой из них у меня, с помощью различных команд в терминале, я нашел этот гораздо более простой способ сам. Я совершенно новичок в Linux и сталкивался с множеством проблем, и такая проблема часто возникает. Это чрезвычайно разочаровывает. Почему все предлагают такие запутанные ответы вместо простого и более очевидного решения?
Вы могли бы выполнить команду xdpyinfo
. Она дает информацию о вашем текущем сервере X11 (и дисплее). Она завершится с ошибкой, если у вас нет такового (например, в чистой среде Wayland).
Если вам нужен визуальный подсказка, я написал простое расширение для GNOME Shell, которое показывает значок, указывающий, используете ли вы Wayland или Xorg.
http://www.fepede.net/blog/2017/04/gnome_shell_extension_xorwayland/
Нет, я заметил pid с именем Wayland в htop, когда переключился на Wayland для интереса. Если не изменилось, это то, что должно быть видно. Обновление: вот снимок экрана, показывающий процесс Wayland.
Что ж, вы также можете просто проверить, запущены ли приложения в их wayland
нативной форме:
cd /usr/bin
ldd $application_name | grep wayland
Кроме того, чтобы проверить, какие бинарные файлы имеют поддержку wayland
, вы могли бы попробовать:
cd /usr/bin
find . | xargs ldd | grep wayland -B 55
Вышеуказанное не совсем чисто, но это работает. Вы можете дополнительно перенаправить вывод в файл, а затем использовать vim
для навигации.
cd /usr/bin
find . | xargs ldd | grep wayland -B 55 >> candidates
vim candidates
# Используйте перемещение vi
Флаг -B
обозначает “перед” и помогает напечатать имя бинарного файла.
Вы можете проверить это для получения дополнительных сведений. Этот ответ адаптирован из вопроса.
Ответ или решение
Чтобы определить, используете ли вы Wayland или X11 (также известный как Xorg) в вашей системе, выполните следующие шаги:
-
Проверьте переменную окружения XDG_SESSION_TYPE:
Вы можете выполнить следующую команду в терминале:
echo $XDG_SESSION_TYPE
Если вывод будет
x11
, значит, вы используете X11. Еслиwayland
, то вы работаете в сессии Wayland. -
Используйте команду loginctl:
Для получения более подробной информации о текущей сессии, выполните следующие команды:
loginctl
В этом выводе найдите вашу сессию и запомните идентификатор сессии (SESSION ID). Затем введите:
loginctl show-session <SESSION_ID> -p Type
Замена
<SESSION_ID>
на ваш идентификатор сессии. Это даст вам тип сессии, в которой вы находитесь.Вы также можете выполнить более компактную команду, чтобы сразу получить тип сессии:
loginctl show-session "$XDG_SESSION_ID" -p Type
-
Проверьте переменные окружения:
Чтобы проверить, установлена ли переменная окружения
WAYLAND_DISPLAY
, вы можете выполнить:echo $WAYLAND_DISPLAY
Если переменная установлена, то это указывает на использование Wayland.
-
Проверьте работу gnome-shell:
Если вы используете GNOME, выполните следующую команду:
ps aux | grep gnome-shell
Если в выводе вы увидите флаг
--wayland
, это значит, что вы используете Wayland. -
Используйте графические настройки:
Откройте "Настройки" вашего рабочего окружения GNOME и перейдите в раздел "Об этом компьютере" (About). Там будет указана информация о вашей оконной системе (Windowing System), где будет ясно обозначено, используете ли вы Wayland или X11.
-
Проверьте, установлен ли X11:
Попробуйте выполнить:
xdpyinfo
Эта команда вернет информацию о сервере X11. Если
xdpyinfo
не удастся выполнить, это сигнализирует о том, что X11 не запущен, а значит, вы, вероятно, используете Wayland. -
Использование GNOME Shell Extension:
Если вы хотите визуально отображать, какая сессия у вас активна, вы можете установить GNOME Shell расширение, которое показывает, используете ли вы Wayland или Xorg. Один из примеров такого расширения доступен здесь.
Следуйте этим шагам, чтобы убедиться, какая из оконных систем используется в вашей системе. Если у вас есть дополнительные вопросы или требуется помощь, не стесняйтесь обращаться за помощью.