<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jul 3, 2019 at 3:09 PM David Strauss <<a href="mailto:david@davidstrauss.net">david@davidstrauss.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">As part of requesting <a href="https://github.com/flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.Background.xml" target="_blank">background/autostart</a>, I'm attempting to pass a parent window ID, but I cannot find how to obtain the <a href="https://flatpak.github.io/xdg-desktop-portal/portal-docs.html#parent_window" target="_blank">expected string</a> from Python. For X11, it looks like it should be possible with the following (though I haven't tested):<div><br></div><div><font face="courier new, monospace">parent_window_id = 'x11:{}'.format(window.get_property("window").get_xid())</font></div><div><br></div><div>However, on Wayland, I see the following (expected) error, which seems commonly encountered based on searching for "GdkWaylandWindow":</div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">AttributeError: 'GdkWaylandWindow' object has no attribute 'get_xid'</font><br></div><div><br></div><div>However, I'm struggling to find documentation on the <span style="font-family:"courier new",monospace">GdkWaylandWindow</span> class (as made available in Python). I also haven't been able to find successful ports of the XID-based window ID code to Wayland in Python-based projects.</div><div><br></div><div>Most examples with Python and GTK seem to pass the parent window Python object itself, like this code from Uberwriter:</div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">filechooser = Gtk.FileChooserDialog(<br>    _("Open a .md file"),<br>    self,<br>    Gtk.FileChooserAction.OPEN,<br>    ("_Cancel", Gtk.ResponseType.CANCEL,<br>     "_Open", Gtk.ResponseType.OK)<br>)</font><br></div><div><br></div><div>Yet, I've still not found success figuring out how to map that concept to a Flatpak portal parent window ID string to send over D-Bus. I've seen some references in Wayland to <a href="https://github.com/wayland-project/wayland-protocols/blob/master/unstable/xdg-foreign/xdg-foreign-unstable-v2.xml" target="_blank">exporting a handle for interprocess use</a>, but the APIs have warnings that they're unstable.</div></div></blockquote><div><br></div><div><br></div><div>Wayland surfaces don't have a public ID unless you explicitly create one using the zxdg_exporter protocol.<br></div><div> The client-side api for this is gdk_wayland_window_export_handle. If this seems too much hassle, just</div><div>passing an empty string will work fine for most purposes.<br></div></div></div>