(Ничто не устанавливает и не использует $ DESKTOP_VERSION. Вы имели в виду $ DESKTOP_SESSION? Именно здесь менеджеры дисплея сохраняют имя выбранного файла xsession.)
Чтобы запросить имя текущего оконного менеджера, используйте wmctrl -m
. Не забывайте правильно цитировать, так как в имени могут быть пробелы.
wm=$(wmctrl -m | sed -n 's/^Name: //p') if [ "$wm" = xmonad ]; then ... fi
(Bash [[
не нужно цитировать на LHS, но POSIX [
делает.)
Механизм работает, сначала запрашивая _NET_SUPPORTING_WM_CHECK
свойство корневого окна X11, а затем запрашивая свойства возвращенного идентификатора окна.
$ xprop -root _NET_SUPPORTING_WM_CHECK _NET_SUPPORTING_WM_CHECK(WINDOW): window id # 0x600006 $ xprop -id 0x600006 _NET_WM_NAME _NET_WM_NAME(UTF8_STRING) = "GNOME Shell"