From 63cb558e7addc9196a5b5cfb181fc4f0f5965827 Mon Sep 17 00:00:00 2001 From: Gustavo Marques Date: Thu, 15 Jul 2021 19:43:38 -0300 Subject: [PATCH] Read Appdata From Installed Flatpak Apps (#41) --- io.elementary.feedback.yml | 18 +++++++++++++----- src/Application.vala | 6 ++++++ src/MainWindow.vala | 15 +++++++++------ 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/io.elementary.feedback.yml b/io.elementary.feedback.yml index 0c0c2845..c08bb728 100644 --- a/io.elementary.feedback.yml +++ b/io.elementary.feedback.yml @@ -1,9 +1,13 @@ app-id: io.elementary.feedback runtime: io.elementary.Platform -runtime-version: '0.1.0' +runtime-version: daily sdk: io.elementary.Sdk command: io.elementary.feedback finish-args: + # for host metadata, '--filesystem=/usr/share/metainfo:ro' won't work. + - '--filesystem=host:ro' + - '--filesystem=/var/lib/flatpak:ro' # for flatpak metadata + - '--share=ipc' - '--share=network' - '--socket=fallback-x11' @@ -12,9 +16,6 @@ finish-args: # needed for perfers-color-scheme - '--system-talk-name=org.freedesktop.Accounts' - # needed to read app metadata - - '--filesystem=host:ro' - - '--metadata=X-DConf=migrate-path=/io/elementary/feedback/' cleanup: - '/include' @@ -28,6 +29,8 @@ cleanup: modules: - name: appstream buildsystem: meson + cleanup: + - /bin config-opts: - '-Dvapi=true' - '-Dapidocs=false' @@ -40,8 +43,9 @@ modules: - name: xapian cleanup: - '/lib/cmake' - - '/share/alocal' + - '/share/aclocal' - '/share/doc' + - '/bin' sources: - type: archive url: https://oligarchy.co.uk/xapian/1.4.17/xapian-core-1.4.17.tar.xz @@ -59,11 +63,15 @@ modules: url: https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz md5: 12e517cac2b57a0121cda351570f1e63 - name: xmlto + cleanup: + - '/bin' sources: - type: archive url: https://releases.pagure.org/xmlto/xmlto-0.0.28.tar.bz2 md5: 93bab48d446c826399d130d959fe676f - name: lmdb + cleanup: + - '/bin' no-autogen: true make-install-args: - 'prefix=/app' diff --git a/src/Application.vala b/src/Application.vala index 7b12434f..bc510fcc 100644 --- a/src/Application.vala +++ b/src/Application.vala @@ -20,6 +20,7 @@ public class Feedback.Application : Gtk.Application { public static GLib.Settings settings; + public static bool sandboxed; private MainWindow main_window; public Application () { @@ -31,6 +32,7 @@ public class Feedback.Application : Gtk.Application { static construct { settings = new Settings ("io.elementary.feedback"); + sandboxed = FileUtils.test ("/.flatpak-info", FileTest.EXISTS); } protected override void activate () { @@ -39,6 +41,10 @@ public class Feedback.Application : Gtk.Application { return; } + if (sandboxed) { + Gtk.IconTheme.get_default ().prepend_search_path ("/var/lib/flatpak/exports/share/icons"); + } + main_window = new MainWindow (this); int window_x, window_y; diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 106a3afb..f3547619 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -75,13 +75,16 @@ public class Feedback.MainWindow : Gtk.ApplicationWindow { listbox.set_sort_func (sort_function); var appstream_pool = new AppStream.Pool (); + appstream_pool.clear_metadata_locations (); try { - bool sandboxed = FileUtils.test ("/.flatpak-info", FileTest.EXISTS); - - if (sandboxed) { + if (Application.sandboxed) { appstream_pool.add_metadata_location ("/run/host/usr/share/metainfo/"); - } else { - appstream_pool.set_flags (AppStream.PoolFlags.READ_METAINFO); + } + + // flatpak's appstream files exists only inside they sandbox + var appdata_dir = "/var/lib/flatpak/app/%s/current/active/files/share/appdata"; + foreach (var app in app_entries) { + appstream_pool.add_metadata_location (appdata_dir.printf (app)); } appstream_pool.load (); @@ -266,7 +269,7 @@ public class Feedback.MainWindow : Gtk.ApplicationWindow { "org.pantheon.mail", "io.elementary.music", "io.elementary.photos", - "io.elementary.screenshot-tool", + "io.elementary.screenshot", "io.elementary.terminal", "io.elementary.videos" };