Как наиболее коротким и универсальным способом узнать установлено ли графическое окружение в 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