Hi, you can check how we use it in xdg-portal-test-kde (a simple app to test various portals).
The code is here: https://invent.kde.org/libraries/xdg-portal-test-kde/-/blob/master/src/portaltest.cpp#L498 Regards, Jan út 18. 8. 2020 v 12:59 odesílatel Méven <meve...@gmail.com> napsal: > Le mar. 18 août 2020 à 12:04, <kde-devel-requ...@kde.org> a écrit : > >> Date: Mon, 17 Aug 2020 12:44:35 +0000 >> From: Damir Porobic <damir_poro...@live.com> >> To: "kde-devel@kde.org" <kde-devel@kde.org> >> Subject: Re: Using xdg-desktop-portal-kde to take screenshots >> Message-ID: >> < >> am0pr09mb389099fac1a15b22f0e6d4afe5...@am0pr09mb3890.eurprd09.prod.outlook.com >> > >> >> Content-Type: text/plain; charset="iso-8859-1" >> >> Hello, >> >> has anyone experience with this portal? >> >> Best regards, >> Damir >> >> ________________________________ >> From: kde-devel <kde-devel-boun...@kde.org> on behalf of Damir Porobic < >> damir_poro...@live.com> >> Sent: Thursday, August 13, 2020 16:16 >> To: kde-devel@kde.org <kde-devel@kde.org> >> Subject: Using xdg-desktop-portal-kde to take screenshots >> >> Hello, >> >> I'm trying use the xdg-desktop-portal-kde ( >> https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/blob/master/src/screenshot.cpp) >> portal in order to take screenshots under Wayland. >> >> If I understand correctly, making a DBus Call like this should open a >> Dialog with a Screenshot that can be shared with my application. >> >> ********************************* >> QDBusInterface >> interface(QStringLiteral("org.freedesktop.portal.Desktop"), >> QStringLiteral("/org/freedesktop/portal/Screenshot"), >> QStringLiteral("org.freedesktop.portal.Screenshot")); >> QDBusPendingReply<QDBusObjectPath> reply; >> >> reply = interface.call(QStringLiteral("Screenshot"), "", QVariantMap()); >> >> if (reply.isError()) { >> qCritical("Invalid reply from DBus: %s", >> qPrintable(reply.error().message())); >> emit canceled(); >> } else { >> qCritical("Dbus success: %s", >> qPrintable(reply.argumentAt<0>().path())); >> } >> ********************************* >> >> But the path to the image is not returned in the result from this call. >> How am I supposed to get the result? >> >> Is there any example implementation that uses this portal? In Spectacle I >> have only seen the solution using org.kde.plasmashell, but not the portal >> solution. >> >> Thanks in advance! >> >> Best regards >> Damir >> > > Hi Damir, > > You need to pass an instance of QVariantMap that will be filled up with a > uri field according to the code: > > auto result = QVariantMap(); > reply = interface.call(QStringLiteral("Screenshot"), "", &result); > result.value("uri"); > > But you might be missing parameters also : > > uint Screenshot(const QDBusObjectPath &handle, > const QString &app_id, > const QString &parent_window, > const QVariantMap &options, > QVariantMap &results); > > Also the file is saved in QStandardPaths::PicturesLocation with a > timestamp. > > Documentation is at > https://flatpak.github.io/xdg-desktop-portal/portal-docs.html#gdbus-org.freedesktop.impl.portal.Screenshot > > I hope this helps, > > Kind regards, > > -- > Méven >