Python的GTK绑定无法调用Meta、Shell、St库的技术咨询
关于Python中访问GNOME Shell相关库的问题解答
为什么无法导入Shell、St、Meta?
- 这些是GNOME Shell专属的私有库,并非通用GNOME平台库,没有提供标准的GObject Introspection绑定,因此PyGObject(
gi.repository)无法直接导入。 - GJS能访问是因为它是GNOME Shell的原生脚本环境,这些库和GNOME Shell深度集成,仅为GJS做了适配,未对外提供通用绑定接口。
Python可访问的GNOME库范围
- 所有提供GObject Introspection元数据(
.gir格式文件)的GNOME库都可通过PyGObject访问,比如你已使用的Gtk、GLib、Gio、WebKit2等。 - 判断方法:系统
/usr/share/gir-1.0/目录下存在对应库的.gir文件,且已安装该库的开发包,即可通过gi.repository导入。
在Python中实现类似功能的替代方案
如果需要获取运行中应用这类功能,可采用以下方法:
- 利用
Gio.DesktopAppInfo和Gio.AppInfoMonitor接口,获取已安装应用列表并监控应用的启动/关闭状态。 - 调用系统工具(如
wmctrl、xdotool),解析命令输出获取窗口及应用信息(需先安装对应工具)。 - 使用第三方Python库
psutil,通过进程信息识别运行中的应用。
内容的提问来源于stack exchange,提问作者Ahmad Ismail
相关产品推荐
相关产品推荐

