如何从Python获取Gnome/Linux/Ubuntu上活动窗口的信息?

5 投票
2 回答
4064 浏览
提问于 2025-04-16 11:27

有没有办法从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的问题也有一些有用的代码示例。

撰写回答