Как получить вывод кода терминала "wmctrl -m"
$ wmctrl -m
Name: GNOME Shell
Class: N/A
PID: N/A
Window manager's "showing the desktop" mode: ON
в коде Python? Я не знаю, как вызвать эту команду в скрипте. Цель состоит в том, чтобы я хотел получить значение mode: ON или mode: OFF.
Прямо сейчас я импортировал только wmctrl
import wmctrl
и затем?
Можно или использовать стиль подпроцесса способ раскошелиться (чрезвычайно рабочий команда и проанализировать вывод), или можно использовать wmctrl пакет правильно:
In [1]: from wmctrl import Window
In [2]: Window.get_active()
Out[2]: Window(id='0x07000062', desktop=0, pid=1878, x=657, y=299, w=1042, h=769, wm_class='terminator.Terminator', host='bert', wm_name='oli@bert: ~', wm_window_role='')
Нет очень в способе документации, таким образом, я предложил бы работать help(Window)
если Вы хотите знать больше... Или просто посмотрите на источник для класса.
Тем временем я выяснил, как получить вывод:
import wmctrl
import subprocess as s
p=s.Popen(["wmctrl","-m"], stdout=s.PIPE)
out, err = p.communicate()
print(out)
if "mode: ON" in str(out):
print("Desktop is shown")
if "mode: OFF" in str(out):
print("Desktop is not shown")
Теперь происходит еще одна странная вещь, попробуйте ее (этот код запускается):
Запустите его, посмотрите вывод на печать.
Затем покажите рабочий стол.
Беги снова.
Выход изменился на «Рабочий стол показан», как и ожидалось.
Снова щелкните значок «Показать рабочий стол» в панели запуска и снова запустите код.
Вы видите окна, поэтому рабочий стол НЕ отображается, но все равно выводится «Рабочий стол показан». Так что это отчасти бесполезно ...