summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2020-08-26 14:47:09 +0200
committerBastien Nocera <hadess@hadess.net>2020-08-26 15:09:39 +0200
commitb104dcb6a60d97418d5ab33e22fb23779f942920 (patch)
tree3277e86ff1e257420e6730dca8c91a5c36efb910
parent3f7a47d321dbfeb83b177132fa5b9e5101685574 (diff)
downloadgrilo-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.c26
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);