Как получить вывод wmctrl в python

Как получить вывод кода терминала "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

и затем?

0
задан 30 July 2013 в 12:45

2 ответа

Можно или использовать стиль подпроцесса способ раскошелиться (чрезвычайно рабочий команда и проанализировать вывод), или можно использовать 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) если Вы хотите знать больше... Или просто посмотрите на источник для класса.

2
ответ дан 30 July 2013 в 12:45

Тем временем я выяснил, как получить вывод:

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")

Теперь происходит еще одна странная вещь, попробуйте ее (этот код запускается):

Запустите его, посмотрите вывод на печать.

Затем покажите рабочий стол.

Беги снова.

Выход изменился на «Рабочий стол показан», как и ожидалось.

Снова щелкните значок «Показать рабочий стол» в панели запуска и снова запустите код.

Вы видите окна, поэтому рабочий стол НЕ отображается, но все равно выводится «Рабочий стол показан». Так что это отчасти бесполезно ...

0
ответ дан 30 July 2013 в 12:45

Другие вопросы по тегам:

Похожие вопросы: