From fb3701247531dc62aec4f5d92a090848d0df121e Mon Sep 17 00:00:00 2001 From: Cajus Pollmeier Date: Wed, 18 Sep 2024 11:17:13 +0200 Subject: [PATCH] Add support for KDE search completion KDE krunner supports DBus plugins that allow search completion comparable to the already supported gnome-shell searchprovider. Exporting the contents of the runner directory enables us to enable search results from within flatpack applications. --- app/flatpak-builtins-build-finish.c | 1 + common/flatpak-context.c | 4 ++++ common/flatpak-dir.c | 10 ++++++++++ tests/make-test-app.sh | 14 ++++++++++++++ tests/test-run.sh | 2 ++ 5 files changed, 31 insertions(+) diff --git a/app/flatpak-builtins-build-finish.c b/app/flatpak-builtins-build-finish.c index 18461297..96a79457 100644 --- a/app/flatpak-builtins-build-finish.c +++ b/app/flatpak-builtins-build-finish.c @@ -236,6 +236,7 @@ collect_exports (GFile *base, "share/icons", /* Icons */ "share/dbus-1/services", /* D-Bus service files */ "share/gnome-shell/search-providers", /* Search providers */ + "share/krunner/dbusplugins", /* KDE krunner DBus plugins */ "share/appdata", /* Copy appdata/metainfo files (legacy path) */ "share/metainfo", /* Copy appdata/metainfo files */ NULL, diff --git a/common/flatpak-context.c b/common/flatpak-context.c index 66ec18b7..ec339e21 100644 --- a/common/flatpak-context.c +++ b/common/flatpak-context.c @@ -3181,6 +3181,10 @@ flatpak_context_get_allowed_exports (FlatpakContext *context, { g_ptr_array_add (allowed_extensions, g_strdup (".ini")); } + else if (strcmp (source_path, "share/krunner/dbusplugins") == 0) + { + g_ptr_array_add (allowed_extensions, g_strdup (".desktop")); + } else if (strcmp (source_path, "share/mime/packages") == 0) { g_ptr_array_add (allowed_extensions, g_strdup (".xml")); diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c index a86c9156..74bb6cd4 100644 --- a/common/flatpak-dir.c +++ b/common/flatpak-dir.c @@ -7604,6 +7604,15 @@ export_desktop_file (const char *app, /* Add a marker so consumers can easily find out that this launches a sandbox */ g_key_file_set_string (keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-Flatpak", app); + /* Disable krunner dbusplugins by default, so that flatpak applications cannot + * unintentionally grab sensible search data. + */ + if (g_key_file_get_boolean (keyfile, G_KEY_FILE_DESKTOP_GROUP, + "X-KDE-PluginInfo-EnabledByDefault", NULL)) + { + g_key_file_set_string (keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-KDE-PluginInfo-EnabledByDefault", "false"); + } + /* If the app has been renamed, add its old .desktop filename to * X-Flatpak-RenamedFrom in the new .desktop file, taking care not to * introduce duplicates. @@ -8074,6 +8083,7 @@ flatpak_export_dir (GFile *source, "share/icons", "../..", "share/dbus-1/services", "../../..", "share/gnome-shell/search-providers", "../../..", + "share/krunner/dbusplugins", "../../..", "share/mime/packages", "../../..", "share/metainfo", "../..", "bin", "..", diff --git a/tests/make-test-app.sh b/tests/make-test-app.sh index eda33337..21f7d5bd 100755 --- a/tests/make-test-app.sh +++ b/tests/make-test-app.sh @@ -114,6 +114,20 @@ ObjectPath=/org/test/Hello/SearchProvider Version=2 EOF +mkdir -p ${DIR}/files/share/krunner/dbusplugins +cat > ${DIR}/files/share/krunner/dbusplugins/org.test.Hello.desktop <