diff options
author | Bastien Nocera <hadess@hadess.net> | 2020-08-26 14:47:09 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2020-08-26 15:09:39 +0200 |
commit | b104dcb6a60d97418d5ab33e22fb23779f942920 (patch) | |
tree | 3277e86ff1e257420e6730dca8c91a5c36efb910 | |
parent | 3f7a47d321dbfeb83b177132fa5b9e5101685574 (diff) | |
download | grilo-plugins-b104dcb6a60d97418d5ab33e22fb23779f942920.tar.gz |
tracker3: Handle sandboxed tracker3 automatically
When running under Flatpak, and if the application isn't allowed to talk to
Tracker 3 outside the sandbox, assume that the miners run inside the
sandbox and change the service name as appropriate.
-rw-r--r-- | src/tracker3/grl-tracker.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/tracker3/grl-tracker.c b/src/tracker3/grl-tracker.c index a07dbd2..7a044e0 100644 --- a/src/tracker3/grl-tracker.c +++ b/src/tracker3/grl-tracker.c @@ -89,6 +89,29 @@ tracker_new_connection_cb (GObject *object, init_sources (); } +static void +set_miner_service (void) +{ + g_autoptr(GKeyFile) keyfile = NULL; + const char *value; + + if (!g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS)) + return; + + keyfile = g_key_file_new (); + if (!g_key_file_load_from_file (keyfile, "/.flatpak-info", G_KEY_FILE_NONE, NULL)) + return; + + value = g_key_file_get_value (keyfile, "Policy Tracker3", "dbus:org.freedesktop.Tracker3.Miner.Files", NULL); + if (value) + return; + + value = g_key_file_get_string (keyfile, "Application", "name", NULL); + grl_tracker_miner_service = g_strdup_printf ("%s.Tracker3.Miner.Files", value); + GRL_INFO("\tRunning in sandboxed mode, using %s as miner service", + grl_tracker_miner_service); +} + gboolean grl_tracker3_plugin_init (GrlRegistry *registry, GrlPlugin *plugin, @@ -125,6 +148,9 @@ grl_tracker3_plugin_init (GrlRegistry *registry, grl_config_get_string (config, "miner-service"); } + if (!grl_tracker_miner_service) + set_miner_service (); + grl_tracker_plugin_init_cancel = g_cancellable_new (); if (grl_tracker_store_path) { store = g_file_new_for_path (grl_tracker_store_path); |