简而言之:这是How to get Gdk window from xid?的重复,但在Wayland下。从韦德兰的西德获取GDK窗口
类似于下面的代码工作正常,直到我从拉伸更新Debian的巴斯特:
#!/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
现在是一个__gi__.GdkWaylandDisplay
,所以GdkX11.X11Window.foreign_new_for_display
抛出
TypeError: argument display: Expected GdkX11.X11Display, but got __gi__.GdkWaylandDisplay
那么,如何获得我现在的gdkWindow
? (我根本看不到所需的在线文档,因此我们也很乐意看到这些指南。)
我很高兴能从PID或进程名称中获得gdkWindow
,因为那是我从中获取XID的地方。
你在使用什么而不是X窗口ID? –
@JoshLee wmctrl -l仍然给我一个int,看起来像一个xid。 – GKFX