簡而言之:這是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