Portal support in GTK¶
GTK will transparently use portals for some functionality when it detects that it is being used inside a Flatpak sandbox. Here are some hints for what GTK applications should do to benefit from this.
- Use
g_get_user_config_dir()
,g_get_user_cache_dir()
andg_get_user_data_dir()
to find the right place to store configuration and data - Use
GtkFileChooserNative
(orGtkFileChooserButton
) to open files. As of xdg-desktop-portal-gtk 1.7.1 it can also open directories. - Use
GtkPrintOperation
for printing - Use
gtk_show_uri_on_window()
org_app_info_launch_default_for_uri()
to open URIs - Use
gtk_application_inhibit()
if you want to inhibit idle or logout - Use
g_application_send_notification()
to show notifications - Use the
GtkApplication::screensaver-active
property to monitor scrensaver status
Additionally, xdg-desktop-portal-gtk is required for GTK themes and fonts. It is also used as a fallback for the filepicker if the main xdg-desktop-portal implementation doesn’t support filepicking.
Portal support in Qt and KDE¶
Qt and KDE libraries will transparently use portals for some functionality when they detect that they are being used inside a Flatpak sandbox. Here are some hints for what Qt or KDE applications should do to benefit from this.
- Use
QDesktopServices::openUrl(const QUrl &url)
orKIO::OpenUrlJob
to open URIs or send an email when usingmailto
URL - Use
QFileDialog
class to open files and, as of Qt5.18.90
, directories. Avoid usingQFileDialog::DontUseNativeDialog
. Note that portals cannot currently give access to directories on the host filesystem - Use
KNotification::notify()
to show notification