База знаний (цифровой суверенитет)
  • Bash - работа с графическим окружением

    Команды BASH
    1 2 5

    A
    951
    0

    Содержание

  • A
    951
    0

    Проверить тип сессии 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_TYPE echo $WAYLAND_DISPLAY echo $DISPLAY loginctl … 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.