<div dir="ltr"><div dir="ltr">On Thu, Jun 13, 2019 at 12:43 AM Alexander Larsson <<a href="mailto:alexl@redhat.com">alexl@redhat.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Yeah, the thing to use here is the background portal (which is kinda<br>
new, so beware it may not be everywhere yet).<br>
"org.freedesktop.impl.portal.Background" is actually the backend (thus<br>
the ".impl"), so what you want to use is<br>
org.freedesktop.portal.Background.<br>
<br>
The docs for that are here:<br><a href="https://github.com/flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.Background.xml" rel="noreferrer" target="_blank">https://github.com/flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.Background.xml</a></blockquote><div> </div>While attempting this approach, I'm having issues seeing the interface I need over D-Bus.<div><br></div><div>I'm running Fedora 30 Silverblue and Flatpak 1.4.2. Based on the Flatpak git history and the existence of <font face="courier new, monospace">/usr/share/dbus-1/interfaces/org.freedesktop.portal.Background.xml</font> on my system, I'd expect to be able to invoke the interface from my machine. However, I don't see the Background interface alongside other portals when I run this command:</div><div><br></div><div><font face="courier new, monospace">busctl --user introspect org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop</font></div><div><br></div><div>When I attempt to access the interface from Python (within the sandbox), I get this error:</div><div><br></div><div><font face="courier new, monospace">gi.repository.GLib.Error: g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface “org.freedesktop.portal.Background” on object at path /org/freedesktop/portal/desktop (19)</font><br></div><div><br></div><div>If I switch the code to using <span style="font-family:"courier new",monospace">org.freedesktop.portal.Screenshot</span> and the D-Bus method <font face="courier new, monospace">Screenshot</font>, it works properly, including the method handling the response signal.</div><div><br></div><div><br></div><div><br></div><div>Here is my current code, with <font face="courier new, monospace">self.receive_request_background_signal()</font> omitted:</div><div><br></div><div><font face="courier new, monospace">session_bus = Gio.bus_get_sync(Gio.BusType.SESSION, None)<br>session_proxy = Gio.DBusProxy.new_sync(session_bus,<br>    Gio.DBusProxyFlags.NONE,<br>    None,<br>    "org.freedesktop.portal.Desktop",<br>    '',<br>    "org.freedesktop.portal.Request",<br>    None)<br><br>args = GLib.Variant('(sa{sv})', ('', {}))  # @TODO: Add commandline, autostart, dbus-activatable<br>result = session_proxy.call_sync('RequestBackground',<br></font><span style="font-family:"courier new",monospace">    </span><font face="courier new, monospace">args,<br></font><span style="font-family:"courier new",monospace">    </span><font face="courier new, monospace">Gio.DBusCallFlags.NONE,<br></font><span style="font-family:"courier new",monospace">    </span><font face="courier new, monospace">-1,<br></font><span style="font-family:"courier new",monospace">    </span><font face="courier new, monospace">None)<br>request_handle = result.unpack()[0]<br>session_bus.signal_subscribe("org.freedesktop.portal.Desktop",<br></font><span style="font-family:"courier new",monospace">    </span><font face="courier new, monospace">"org.freedesktop.portal.Request",<br></font><span style="font-family:"courier new",monospace">    </span><font face="courier new, monospace">"Response",<br></font><span style="font-family:"courier new",monospace">    </span><font face="courier new, monospace">request_handle,<br></font><span style="font-family:"courier new",monospace">    </span><font face="courier new, monospace">None,<br></font><span style="font-family:"courier new",monospace">    </span><font face="courier new, monospace">Gio.DBusSignalFlags.NO_MATCH_RULE,<br></font></div><div><span style="font-family:"courier new",monospace">   </span><span style="font-family:"courier new",monospace"> </span><span style="font-family:"courier new",monospace">self.receive_request_background_signal)</span> </div></div></div>