简而言之:这是如何从 xid 获取 Gdk 窗口的重复?,但在韦兰之下。
在我将 Debian 从 Stretch 更新为 Buster 之前,如下代码运行良好:
#!/usr/bin/env python3
from gi.repository import Gdk
from gi.repository import GdkX11
Gdk.Window.process_all_updates()
xlib_window = 0x2a00005 # for example. From wmctrl; xwininfo used in the previous question.
gdk_display = GdkX11.X11Display.get_default()
gdk_window = GdkX11.X11Window.foreign_new_for_display(gdk_display, xlib_window)
print gdk_window.get_geometry()
不幸的是,gdk_display
现在是 a __gi__.GdkWaylandDisplay
,所以GdkX11.X11Window.foreign_new_for_display
抛出
TypeError: argument display: Expected GdkX11.X11Display, but got __gi__.GdkWaylandDisplay
那么我现在如何得到我的gdkWindow
呢?(我根本无法在线看到必要的文档,因此也将不胜感激。)
我很高兴也gdkWindow
能从 PID 或进程名称中获得,因为这是我从中获得 XID 的地方。