如何从Python获取Gnome/Linux/Ubuntu上活动窗口的信息?
有没有办法从Python获取当前打开的所有窗口的列表,并查看哪个窗口是最上面的(也就是当前活动的窗口)?
这是在Ubuntu Linux的Gnome环境下进行的。
wnck看起来可以做到这一点,但它的文档非常少。
2 个回答
12
这里有一段代码,使用的是现代的 GObject Introspection 库,而不是现在已经不推荐使用的 PyGTK 方法,正如 Josh Lee 提到的那样:
from gi.repository import Gtk, Wnck
Gtk.init([]) # necessary if not using a Gtk.main() loop
screen = Wnck.Screen.get_default()
screen.force_update() # recommended per Wnck documentation
window_list = screen.get_windows()
active_window = screen.get_active_window()
关于文档,你可以查看 Libwnck 参考手册。虽然这个手册不是专门针对 Python 的,但使用 GObject Introspection 的主要目的就是让不同编程语言之间有相同的接口,这要归功于 gir
绑定。
另外,Ubuntu 系统自带了 wnck
及其对应的 gir
绑定,但如果你需要安装它们,可以使用以下命令:
sudo apt-get install libwnck-3-* gir1.2-wnck-3.0
这条命令还会安装 libwnck-3-dev
,虽然这个不是必须的,但它会安装一些有用的文档,你可以通过 DevHelp 来阅读这些文档。
8
import wnck
screen = wnck.screen_get_default()
window_list = screen.get_windows()
active_window = screen.get_active_window()
你可以看看这个链接:在X中获取活动窗口标题,还有文档里的WnckScreen。其他关于wnck的问题也有一些有用的代码示例。