Я хочу проверить, какой оконный менеджер использует пользователь (например, GNOME или KDE и т. д.). Как мне это сделать?
Как я могу проверить с помощью Python, какой оконный менеджер запущен?
comment
Если вы расскажете, почему вы хотите его обнаружить, у кого-то может быть идея получше.
- person viraptor   schedule 26.07.2010
comment
возможный дубликат Найти имя оконного менеджера X
- person Greg Hewgill   schedule 26.07.2010
comment
Возможно, вы сможете проверить определенные процессы, которые обычно выполняются, когда пользователь использует любой из этих оконных менеджеров. Я действительно не проверял это, поэтому комментарий вместо ответа.
- person Maiku Mori   schedule 26.07.2010
Ответы (2)
Вы не можете. Нет центрального места, где программа регистрируется, чтобы сказать «привет, я оконный менеджер».
Например, я запускаю xmonad. Я просто запускаю это, вызывая xmonad
в моем файле ~/.xsession
вместе с парой других программ, чтобы он запускался при входе в систему. Вы не можете обнаружить это.
person
Daniel Egeberg
schedule
26.07.2010
Я только что подумал о том, что оконный менеджер такой же, как и любая другая программа, верно? Итак, в списке процессов, например, я запускаю GNOME, и у меня есть процесс под названием «gnome-sessions». Так что я мог бы проверить, запущен ли этот процесс, чтобы знать, что пользователь использует GNOME. Вы не можете запускать 2 или более WM одновременно, верно?
- person Jay; 26.07.2010
@Jay: Конечно, если у вас есть список всех оконных менеджеров, я думаю, вы могли бы. Хотя есть много разных. Вы не можете сделать общее решение.
- person Daniel Egeberg; 26.07.2010
См.
xnest
или Xephyr
или startx -- :1
причины, по которым ваше предположение о невозможности запуска двух или более WM одновременно неверно.
- person sarnold; 26.07.2010
Поскольку вы, очевидно, используете Linux, вы можете использовать wmctrl -m или inxi-Sxx.
import subprocess
def get_wm():
output = subprocess.run(['wmctrl', '-m'], text=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if output.stderr:
return(output.stderr)
else:
return(output.stdout)
print(get_wm())
person
Honest Abe
schedule
11.09.2019