summaryrefslogtreecommitdiff
path: root/src/nautilus-tag-manager.c
diff options
context:
space:
mode:
authorSam Thursfield <sam@afuera.me.uk>2020-08-01 17:25:27 +0200
committerSam Thursfield <sam@afuera.me.uk>2020-09-02 18:50:17 +0200
commitf9c79fce6d90e7e5842f2c56a1ec98a151126874 (patch)
tree86f3ab12aa2c5e2e49ed81c046fdd18201b299fb /src/nautilus-tag-manager.c
parent034a6a3394d9de5da743f9e62f6019ca37b50f1d (diff)
downloadnautilus-f9c79fce6d90e7e5842f2c56a1ec98a151126874.tar.gz
Use Tracker Miners inside Flatpak when not available on the host
This means the Nautilus flatpak will be able to use Tracker on systems which don't have Tracker 3 available on the host. It comes at a cost of increased resource consumption inside the Flatpak due running an extra indexer process there.
Diffstat (limited to 'src/nautilus-tag-manager.c')
-rw-r--r--src/nautilus-tag-manager.c68
1 files changed, 37 insertions, 31 deletions
diff --git a/src/nautilus-tag-manager.c b/src/nautilus-tag-manager.c
index 8009e6ca9..e21749a10 100644
--- a/src/nautilus-tag-manager.c
+++ b/src/nautilus-tag-manager.c
@@ -21,6 +21,7 @@
#include "nautilus-file.h"
#include "nautilus-file-undo-operations.h"
#include "nautilus-file-undo-manager.h"
+#include "nautilus-tracker-utilities.h"
#define DEBUG_FLAG NAUTILUS_DEBUG_TAG_MANAGER
#include "nautilus-debug.h"
@@ -35,6 +36,7 @@ struct _NautilusTagManager
gboolean tracker_ok;
TrackerSparqlConnection *local;
TrackerSparqlConnection *miner_fs;
+ const gchar *miner_fs_busname;
TrackerNotifier *notifier;
TrackerSparqlStatement *query_starred_files;
@@ -81,14 +83,12 @@ enum
LAST_SIGNAL
};
-#define TRACKER_MINER_FS_BUSNAME "org.freedesktop.Tracker3.Miner.Files"
-
#define QUERY_STARRED_FILES \
"SELECT ?file_url ?content_id " \
"{ " \
" ?content_urn a nautilus:FileReference ; " \
" nautilus:starred true . " \
- " SERVICE <dbus:" TRACKER_MINER_FS_BUSNAME "> { " \
+ " SERVICE <dbus:%s> { " \
" ?content_urn nie:isStoredAs ?file_url . " \
" BIND (tracker:id (?content_urn) AS ?content_id) " \
" } " \
@@ -97,7 +97,7 @@ enum
#define QUERY_UPDATED_FILE_URL \
"SELECT ?file_url EXISTS { ?content_urn nautilus:starred true } AS ?starred" \
"{ " \
- " SERVICE <dbus:" TRACKER_MINER_FS_BUSNAME "> { " \
+ " SERVICE <dbus:%s> { " \
" ?content_urn nie:isStoredAs ?file_url . " \
" FILTER (tracker:id(?content_urn) = ~id) " \
" }" \
@@ -432,14 +432,15 @@ nautilus_tag_manager_delete_tag (NautilusTagManager *self,
GList *selection,
GString *query)
{
- g_string_append (query,
- "DELETE { "
- " ?content_urn a nautilus:FileReference ; "
- " nautilus:starred true . "
- "} "
- "WHERE { "
- " SERVICE <dbus:" TRACKER_MINER_FS_BUSNAME "> { "
- " ?content_urn nie:isStoredAs ?file_url . ");
+ g_string_append_printf (query,
+ "DELETE { "
+ " ?content_urn a nautilus:FileReference ; "
+ " nautilus:starred true . "
+ "} "
+ "WHERE { "
+ " SERVICE <dbus:%s> { "
+ " ?content_urn nie:isStoredAs ?file_url . ",
+ self->miner_fs_busname);
query = add_selection_filter (selection, query);
@@ -453,13 +454,14 @@ nautilus_tag_manager_insert_tag (NautilusTagManager *self,
GList *selection,
GString *query)
{
- g_string_append (query,
- "INSERT { "
- " ?content_urn a nautilus:FileReference . "
- " ?content_urn nautilus:starred true . "
- "} WHERE { "
- " SERVICE <dbus:" TRACKER_MINER_FS_BUSNAME "> { "
- " ?content_urn nie:isStoredAs ?file_url . ");
+ g_string_append_printf (query,
+ "INSERT { "
+ " ?content_urn a nautilus:FileReference . "
+ " ?content_urn nautilus:starred true . "
+ "} WHERE { "
+ " SERVICE <dbus:%s> { "
+ " ?content_urn nie:isStoredAs ?file_url . ",
+ self->miner_fs_busname);
query = add_selection_filter (selection, query);
@@ -570,11 +572,13 @@ nautilus_tag_manager_get_file_ids_for_urls (NautilusTagManager *self,
{
GString *query;
- query = g_string_new ("SELECT ?file_url ?content_id "
- "WHERE { "
- " SERVICE <dbus:" TRACKER_MINER_FS_BUSNAME "> { "
- " ?content_urn nie:isStoredAs ?file_url . "
- " BIND (tracker:id (?content_urn) AS ?content_id) ");
+ query = g_string_new ("");
+ g_string_append_printf (query, "SELECT ?file_url ?content_id "
+ "WHERE { "
+ " SERVICE <dbus:%s> { "
+ " ?content_urn nie:isStoredAs ?file_url . "
+ " BIND (tracker:id (?content_urn) AS ?content_id) ",
+ self->miner_fs_busname);
query = add_selection_filter (selection, query);
@@ -890,6 +894,7 @@ setup_tracker_connections (NautilusTagManager *self,
GError **error)
{
const gchar *datadir;
+ gchar *query_with_busname;
g_autofree gchar *store_path = NULL;
g_autofree gchar *ontology_path = NULL;
g_autoptr (GFile) store = NULL;
@@ -917,31 +922,32 @@ setup_tracker_connections (NautilusTagManager *self,
}
/* Connect to Tracker filesystem index to follow file renames. */
- self->miner_fs = tracker_sparql_connection_bus_new (TRACKER_MINER_FS_BUSNAME,
- NULL,
- NULL,
- error);
-
+ self->miner_fs = nautilus_tracker_get_miner_fs_connection (error);
if (*error)
{
return FALSE;
}
+ self->miner_fs_busname = nautilus_tracker_get_miner_fs_busname (NULL);
/* Prepare reusable queries. */
+ query_with_busname = g_strdup_printf (QUERY_UPDATED_FILE_URL, self->miner_fs_busname);
self->query_updated_file_url = tracker_sparql_connection_query_statement (self->local,
- QUERY_UPDATED_FILE_URL,
+ query_with_busname,
cancellable,
error);
+ g_free (query_with_busname);
if (*error)
{
return FALSE;
}
+ query_with_busname = g_strdup_printf (QUERY_STARRED_FILES, self->miner_fs_busname);
self->query_starred_files = tracker_sparql_connection_query_statement (self->local,
- QUERY_STARRED_FILES,
+ query_with_busname,
cancellable,
error);
+ g_free (query_with_busname);
if (*error)
{