如何获取终端代码“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
进而?
答案1
您可以使用子进程样式的方式进行分叉(本质上是运行命令并解析输出),也可以使用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
与此同时,我想出了如何获取输出:
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")
现在又发生了一件奇怪的事情,尝试一下(此代码运行):
运行它,观察打印的输出。
然后显示桌面。
再次运行。
正如预期的那样,输出变为“桌面显示”。
再次单击启动器中的“显示桌面”图标并再次运行代码。
您看到了窗口,因此桌面没有显示,但输出仍然是“桌面已显示”。所以它有点没用...