Есть ли способ (например, команда или переменная окружения) определить, какой оконный менеджер активно работает в текущем сеансе?
источник
Есть ли способ (например, команда или переменная окружения) определить, какой оконный менеджер активно работает в текущем сеансе?
Если вы wmctrl
установили, первая строка вывода из команды
wmctrl -m
покажет вам имя оконного менеджера. Если вы не wmctrl
установили, используйте следующую команду, чтобы установить его:
sudo apt-get install wmctrl
Обратите внимание, man wmctrl
(то есть, man
страница для wmctrl
) говорит частично:
-m Показать информацию о диспетчере окон ...
В моей системе Ubuntu 11.10 / Linux 3.0.0-14-generic # 23-Ubuntu x86_64 / metacity 2.34.1, первая строка вывода wmctrl -m
была: Name: Metacity
пока echo $DESKTOP_SESSION
показывался ubuntu-2d
и echo $XDG_CURRENT_DESKTOP
показывался Unity
.
На свежей Ubuntu 15.10 установку Ubuntu desktop
программного обеспечения на старом ноутбуке, первая линия выхода из wmctrl -m
было: в Name: Compiz
то время как DESKTOP_SESSION
и XDG_CURRENT_DESKTOP
ценности были ubuntu
иUnity
ssh -Y {host} 'wmctrl -m'
действительно возвращает некоторые значения (например, «Имя: Compiz» и несколько N / A), но имеет смыслssh
иметь ограниченную информацию о диспетчере окон.wmctrl -d
(Список всех рабочих столов, управляемых оконным менеджером), либоwmctrl -l
(Список окон, управляемых оконным менеджером) нормально работает на Xubuntu Wily с Window Maker?В системах Linux я тестировал переменные окружения
XDG_CURRENT_DESKTOP
иGDMSESSION
и получил следующие результаты.Ubuntu 18.04 (Ubuntu)
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu
Ubuntu 18.04 (Ubuntu on Wayland)
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu-wayland
Ubuntu 16.04
Единство (7)
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Ubuntu 14.04
Единство с Миром
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Примечание MIR_SERVER_NAME также установлено
MIR_SERVER_NAME=session-$NUMBER
Unity работает без Мира
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
XFCE
XDG_CURRENT_DESKTOP=XFCE
GDMSESSION=xfce
Ubuntu 12.04
KDE
XDG_CURRENT_DESKTOP=
GDMSESSION=kde-plasma
Единство 3d
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Unity 2d
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu-2d
Гном
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-shell
Гномик Классик
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-classic
Gnome Classic (без эффектов)
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-fallback
Другие дистрибутивы на основе Ubuntu
Мята 13 (Корица)
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=cinnamon
Монетный двор 16 (издание KDE)
XDG_CURRENT_DESKTOP=KDE
GDMSESSION=default
Мята 17 (Корица)
XDG_CURRENT_DESKTOP=X-Cinnamon
GDMSESSION=default
Lubuntu 12.04
XDG_CURRENT_DESKTOP=LXDE
GDMSESSION=Lubuntu
Wasta 14.04 / 18.04
XDG_CURRENT_DESKTOP=X-Cinnamon
GDMSESSION=cinnamon
Wasta 14.04 с помощью рабочего стола Gnome.
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome
Ubuntu Mate 18.04
XDG_CURRENT_DESKTOP=MATE
GDMSESSION=mate
Xubuntu 18.04
XDG_CURRENT_DESKTOP=XFCE
GDMSESSION=xubuntu
источник
В терминале введите
env
все переменные окружения. Некоторые из них:XDG_CURRENT_DESKTOP - сообщает, какую среду рабочего стола вы используете
GDMSESSION - Сообщает вам, какую опцию вы выбрали на приветствии lightdm для входа.
Чтобы использовать их, перейдите в терминал и введите:
(Будет выводить, например, «Unity», если вы используете Unity)
или же
(Будет выводиться, например, «Ubuntu», если вы выбрали Ubuntu в логин или «Ubuntu-2d», если вы выбрали тот в логин.)
У вас есть другие, если вы посмотрите ближе к выводам
env
вроде DESKTOP_SESSION и COMPIZ_CONFIG_PROFILEПоскольку то, что вы ищете, - это название того, какой диспетчер окон используется, единственный способ узнать, как это сделать, - просмотреть список процессов. Для этого есть команда под названием
pgrep
( Википедия ). Я сделал следующее, чтобы получить имя, так как параметр -l добавляет идентификатор процесса:pgrep -l compiz |cut -d " " -f2
поскольку процесс выполняется одним и тем же пользователем, нет необходимости добавлять префикс sudo. Затем вы можете использовать это для создания сценария, который выполняет действие на основе диспетчера окон.Чтобы искать другие типы, просто измените слово
compiz
на другое, напримерmutter
,kwin
и т.д ..источник
$XDG_CURRENT_DESKTOP
это текущая среда рабочего стола, а не менеджер окон.Я нашел
pstree
большую помощь.Монтаж
выход
Это то, что я получил.
источник
источник
)
в конце.xprop -root -notype
отображает все свойства корневого окна (и пропускает типы для более простого анализа), выходные данные отправляются поawk
каналу; 2.awk
Инструкция$1=="_NET[blah]CK:"{print $5}'
сравнивает первый столбец каждой строки входных данных, которые она получила через канал, с заданной строкой, и если она находит совпадение, она запускает код в скобках, который печатает пятый столбец из этой строки - именно так и происходит (совершенно случайно, Бьюсь об заклад) быть идентификатором атома "_NET_SUPPORTING_WM_CHECK"; 3. этот идентификатор затем снова используется для получения свойств диспетчера Windows сxprop -id
Я также тестировал с KDE, и мой вывод:
а) Графически, с HardInfo: ответ обычно находится в «Операционная система»> «Среда рабочего стола», но если нет, вы можете посмотреть «Переменные среды». HardInfo готов ко всем протестированным дистрибутивам, кроме дистрибутива с KDE, но его можно легко и быстро установить (только 2 пакета в Linux Mint 13).
б) из командной строки с помощью следующей команды:
ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm"
. Элемент, который появляется в большем количестве строк, должен быть ответом (если есть ничья, то решение с «сессией» должно быть решением).источник
gnome-...
процессов (и хитkdevtmpfs
Ничто из вышеперечисленного на самом деле не сработало для меня, я просто хотел узнать, запущен ли Gnome в качестве моего текущего сеанса рабочего стола.
Это то, что сработало, откройте терминал
(чтобы проверить, какой вариант или версию я установил на свой компьютер UBUNTU)
(запускает, какой сеанс рабочего стола / среда рабочего стола в настоящее время используется)
(чтобы узнать какая версия gnome установлена)
источник
Или в одну строку:
источник
Это возможно благодаря dbus и службе учетных записей (обе по умолчанию в Ubuntu).
Стоит отметить, что я проверил это при входе в систему через lightdm (то есть графический экран входа в систему), он обнаружил классический рабочий стол, такой как черный ящик, и, очевидно, обнаружил Unity. Я подозреваю, что это значение того, что пользователь выбирает на экране входа в качестве сеанса, поэтому немного проще использовать эту проверку для процессов
источник
скрипт
Следующий сценарий привел как лучший ответ на аналогичный вопрос , который я разместил над на unix.se . Он также прекрасно работает с Unity и LXDE.
источник
Вы можете использовать инструмент под названием
inxi
. Его можно получить в репозиториях Ubuntu:sudo apt install inxi
или с GitHub: https://github.com/smxi/inxi
Просто запустите команду следующим образом:
Обратите внимание на
Desktop: i3
часть. В моем случае оконный менеджер я используюi3
.Опция
-S
отображаетx
информацию о системе и добавляет информацию о оконном менеджере.источник
Я могу думать только о проверке известных оконных менеджеров в запущенных процессах. Раньше в gconf был ключ, для которого был задан предпочтительный оконный менеджер, но он не рекомендуется с Gnome 2.12.
Итак, если это для целей программирования, я предлагаю вам исследовать все оконные менеджеры linux; некоторые популярные:
Вам нужно будет выполнить проверку каждого с помощью команды
pgrep -l $WINDOW_MANAGER
, где$WINDOW_MANAGER
находится имя оконного менеджера, для которого вы хотите проверить. Командаpgrep
проверяет запущенные процессы.Я не уверен на 100%, считается ли Gnome Shell оконным менеджером; остальные оконные менеджеры я получил из списка в
/usr/bin/gnome-wm
скрипте. Этот скрипт на самом деле должен быть пригодным для использования (поскольку он присутствует в чистой установке), но в моем случае он пытается запустить,compiz
который не является моим оконным менеджером по умолчанию (не в моем сеансе Gnome).РЕДАКТИРОВАТЬ:
Ну, комментарий @Anarci кажется более точным. В моем случае это действительно показывало
gnome-shell
.источник
pgrep -l "compiz|metacity|mutter|kwin|sawfish|fluxbox|openbox|xmonad"
$DISPLAY
окружение).