Como obter saída wmctrl em python

0

Como posso obter a saída do código do terminal "wmctrl -m"

$ wmctrl -m
Name: GNOME Shell
Class: N/A
PID: N/A
Window manager's "showing the desktop" mode: ON

em código python? Eu não sei como invocar esse comando em um skript. O objetivo é, eu quero obter o valor do modo: ON ou modo: OFF.

Neste momento, importei apenas o wmctrl

import wmctrl

e depois?

    
por user2366975 30.07.2013 / 10:45

2 respostas

2

Você pode usar uma forma de bifurcação no estilo de subprocesso (essencialmente executando um comando e analisando a saída) ou pode usar o pacote wmctrl corretamente:

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='')

Não há muito em termos de documentação, por isso, sugiro que você execute help(Window) se quiser saber mais ... ou apenas olhe a fonte da classe.

    
por Oli 30.07.2013 / 11:02
0

Nesse meio tempo, descobri como obter a saída:

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

Agora, outra coisa estranha ocorre, experimente (esse código é executado):

Execute, observe a saída impressa.

Em seguida, mostre a área de trabalho.

Execute novamente.

A saída foi alterada para "A área de trabalho é exibida", como esperado.

Clique novamente no ícone "mostrar área de trabalho" no iniciador e execute o código novamente.

Você vê o Windows, assim, a área de trabalho não é mostrada, mas ainda assim a saída é "Desktop é mostrado". Então é meio inútil ...

    
por user2366975 30.07.2013 / 11:24