如何在 python 中获取 wmctrl 输出

如何在 python 中获取 wmctrl 输出

如何获取终端代码“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")

现在又发生了一件奇怪的事情,尝试一下(此代码运行):

运行它,观察打印的输出。

然后显示桌面。

再次运行。

正如预期的那样,输出变为“桌面显示”。

再次单击启动器中的“显示桌面”图标并再次运行代码。

您看到了窗口,因此桌面没有显示,但输出仍然是“桌面已显示”。所以它有点没用...

相关内容