Bash - работа с графическим окружением
Команды BASH
2
Сообщения
1
Posters
4
Просмотры
-
Содержание
-
Проверить тип сессии Xorg или Wayland
Вот актуальный на конец 2025 года набор команд — какие реально работают и что выводят в разных ситуациях (локально, по SSH, в TTY, в контейнерах).
Топ-5 рабочих способов (по надёжности)
# 1. Самый надёжный (2025 стандарт) loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type --value # Вывод: wayland или x11 # 2. Коротко и красиво (мой ежедневный фаворит) echo $XDG_SESSION_TYPE # Вывод: wayland / x11 / tty # 3. Ещё короче и всегда работает локально echo $WAYLAND_DISPLAY $XDG_SESSION_TYPE # Если есть $WAYLAND_DISPLAY (например, wayland-0) → Wayland # Иначе, если $XDG_SESSION_TYPE = x11 → Xorg # Иначе → tty # 4. Универсальная однострочка (работает даже по SSH) if [ -n "$WAYLAND_DISPLAY" ] || [ "$XDG_SESSION_TYPE" = "wayland" ]; then echo "Wayland" elif [ "$XDG_SESSION_TYPE" = "x11" ]; then echo "Xorg" else echo "TTY / Консоль / SSH" fi# 5. Самая красивая и информативная echo "Сессия: $XDG_SESSION_TYPE" echo "Дисплей: ${WAYLAND_DISPLAY:-${DISPLAY:-не определён}}" echo "Композитор: ${XDG_CURRENT_DESKTOP:-неизвестно}"Что выводят команды в разных случаях (2025)
Ситуация echo $XDG_SESSION_TYPEecho $WAYLAND_DISPLAYecho $DISPLAYloginctl … TypeЛокально в GNOME/KDE (Wayland) wayland wayland-0 (пусто) wayland Локально в GNOME/KDE (X11) x11 (пусто) :0 x11 Локально в TTY (Ctrl+Alt+F3) tty (пусто) (пусто) tty По SSH tty (пусто) (пусто) tty В WSL2 с GUI x11 или wayland (зависит от дистра) :0 x11 В Docker-контейнере с X11 forwarding (обычно пусто) (пусто) :10 (не работает) Мой личный алиас (добавь в ~/.bashrc / ~/.zshrc)
alias session='echo "Session: $XDG_SESSION_TYPE | Desktop: $XDG_CURRENT_DESKTOP | Display: ${WAYLAND_DISPLAY:-$DISPLAY}"'Использование:
$ session Session: wayland | Desktop: GNOME | Display: wayland-0Итог: запомни всего две команды на всю жизнь
echo $XDG_SESSION_TYPE # 99 % случаев достаточно loginctl show-session $(loginctl list-sessions | grep $(whoami) | awk '{print $1}') -p Type --valueВ 2025 году в 95 % случаев достаточно просто
echo $XDG_SESSION_TYPE.