Сценарий для поиска среды рабочего стола по умолчанию?

Предположим, что система Linux Desktop Environment установлена. Когда включено питание и введенные учетные данные, независимо от того, какая среда рабочего стола запущена, я рассмотрю среду рабочего стола по умолчанию. Пользователь может выбрать другую рабочую среду, такую ​​как KDE или XFCE, но это не будет по умолчанию. Что такое агностический фрагмент кода для определения рабочего стола по умолчанию или еще лучше, последний использованный DE. Код должен запускаться из удаленного сеанса SSH или только текстовой консоли CTRL-ALT-F2.

Толчком к этому вопросу является то, что я недавно отправил по электронной почте вывод nvidia-bug-report.sh в NVIDIA. Техническая поддержка NVIDIA ответила спустя несколько дней, спросив: «Что такое ОС?», «GNOME или KDE?», «Какое распределение?» – все метаданные, которые могут автоматически собираться и каталогизироваться по их собственному сценарию.

Поскольку среда рабочего стола разбилась, nvidia-bug-report.sh необходимо запустить из текстовой консоли CTRL-ALT-F2 или удаленного сеанса SSH. Ясно, что ни одна из них не имеет переменной $ DESKTOP_SESSION. Ответ будет возвращать один или несколько пунктов в порядке уверенности из списка, подобного "gnome|kde|mate|cinnamon|lx|xfce|jwm|none" .

Выбор между GNOME или KDE в Ubuntu.
Выбор типа сеанса рабочей среды в Fedora.Выбор между GNOME или KDE в CentOS.

Похоже, скрипты похожи на « Как я могу получить имя распространения и номер версии в простом сценарии оболочки? »

One Solution collect form web for “Сценарий для поиска среды рабочего стола по умолчанию?”

Возможно, этот фрагмент поможет, если нет надежного решения:

 $ w | awk -vdp=$DISPLAY '($2 ~ dp){gsub(/.*\//, "");print $NF}' 

или, может быть :

 $ qdbus | grep -oPm1 '(kdm|xfce|gnome)' 

Другой подход, использующий pstree:

 $ pstree -H $(pidof X) | grep -oP '(kdm|xfce|gnome)(?=.*?X)' kdm 

И еще один:

 $ lsof ~/.xsession-errors | grep -oEm1 '(kde|xfce|gnome)' kde 

или вариант:

 $ lsof ~/.xsession-errors | awk 'NR==2{print $1;quit}' startkde 
  • Длина в многострочной строке
  • Ввод папки с пробелами и escape-символами с использованием bash
  • Bash, если утверждение не работает должным образом
  • как я могу выполнить вычисление чисел из текстового файла в сценарии оболочки
  • Сохранение вывода stderr в переменной без модификации stdout и повторение этого действия
  • Напишите bash_history в файл с меткой времени
  • Копировать только Конкретный текст файла в другой
  • Обмен переменными в нескольких сценариях оболочки
  • Функциональность Copytruncate без использования logrotate
  • Нужен сценарий оболочки для преобразования CSV в формат Apache httpd
  • Проблема использования пользовательской переменной в скрипте
  • Linux и Unix - лучшая ОС в мире.