Как узнать, используется ли Wayland или X11

Вопрос или проблема

Я только что установил последнюю версию 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) в вашей системе, выполните следующие шаги:

  1. Проверьте переменную окружения XDG_SESSION_TYPE:

    Вы можете выполнить следующую команду в терминале:

    echo $XDG_SESSION_TYPE

    Если вывод будет x11, значит, вы используете X11. Если wayland, то вы работаете в сессии Wayland.

  2. Используйте команду loginctl:

    Для получения более подробной информации о текущей сессии, выполните следующие команды:

    loginctl

    В этом выводе найдите вашу сессию и запомните идентификатор сессии (SESSION ID). Затем введите:

    loginctl show-session <SESSION_ID> -p Type

    Замена <SESSION_ID> на ваш идентификатор сессии. Это даст вам тип сессии, в которой вы находитесь.

    Вы также можете выполнить более компактную команду, чтобы сразу получить тип сессии:

    loginctl show-session "$XDG_SESSION_ID" -p Type
  3. Проверьте переменные окружения:

    Чтобы проверить, установлена ли переменная окружения WAYLAND_DISPLAY, вы можете выполнить:

    echo $WAYLAND_DISPLAY

    Если переменная установлена, то это указывает на использование Wayland.

  4. Проверьте работу gnome-shell:

    Если вы используете GNOME, выполните следующую команду:

    ps aux | grep gnome-shell

    Если в выводе вы увидите флаг --wayland, это значит, что вы используете Wayland.

  5. Используйте графические настройки:

    Откройте "Настройки" вашего рабочего окружения GNOME и перейдите в раздел "Об этом компьютере" (About). Там будет указана информация о вашей оконной системе (Windowing System), где будет ясно обозначено, используете ли вы Wayland или X11.

  6. Проверьте, установлен ли X11:

    Попробуйте выполнить:

    xdpyinfo

    Эта команда вернет информацию о сервере X11. Если xdpyinfo не удастся выполнить, это сигнализирует о том, что X11 не запущен, а значит, вы, вероятно, используете Wayland.

  7. Использование GNOME Shell Extension:

    Если вы хотите визуально отображать, какая сессия у вас активна, вы можете установить GNOME Shell расширение, которое показывает, используете ли вы Wayland или Xorg. Один из примеров такого расширения доступен здесь.

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

Оцените материал
Добавить комментарий

Капча загружается...