Как наиболее коротким и универсальным способом узнать установлено ли графическое окружение в Linux?

Можно конечно перечислить пакеты, которые относятся к x11, wayland, mir, или написать длинную регулярку для pgrep, но хочется лаконичности.


Ответы (2 шт):

Автор решения: user244413
$loginctl show-session "$XDG_SESSION_ID" -p Type   
Type=x11

Есть еще

$ echo $XDG_SESSION_TYPE
x11

но это работает не всегда.

Upd: Если дисплейный менеджер не запущен, то пишет tty. Спасибо don Rumata за уточнение.
Это не работает через Ansible, см. комментарии.

Источник.

→ Ссылка
Автор решения: don Rumata

Нашёл совершенно случайно. В общем, там, где установлен systemd и есть какой-то гуй - есть и сервис display-manager.service. Пробовал на нескольких машинах - там где иксов нет - демона не существует.

Для Ansible можно делать примерно так:

---
  - name: Run if gui is installed
    hosts: all
    strategy: free
    serial:
      - "100%"
    tasks:

    - service_facts:
      when: ansible_system == 'Linux'

    - name: abc
      when:
        - ansible_system == 'Linux'
        - ansible_facts.services["display-manager.service"].state == 'active'
      command: echo 1111111111
→ Ссылка