diff --git a/meson.build b/meson.build index b563d214e5fb0509c0d62845c7e1daa6f840b8e0..7f6e8ee4b13bd5eb80365e5be8d05f6523e51866 100644 --- a/meson.build +++ b/meson.build @@ -201,7 +201,7 @@ config_h.set10('HAVE_FN_EXPLICIT_BZERO', enable_snap = get_option('snap') if enable_snap snapd_glib_deps = [ - dependency('snapd-glib', version: '>= 1.49') + dependency('snapd-glib', version: '>= 1.57') ] endif config_h.set('HAVE_SNAP', enable_snap, diff --git a/panels/applications/cc-applications-panel.c b/panels/applications/cc-applications-panel.c index bc947e34abf729b1dc7672d3c1bf3630199cd945..457667a36b28de3b488c20ab9f62cdd4b77f5d32 100644 --- a/panels/applications/cc-applications-panel.c +++ b/panels/applications/cc-applications-panel.c @@ -620,10 +620,13 @@ add_snap_permissions (CcApplicationsPanel *self, g_autoptr(GList) rows = NULL; gint index; g_autoptr(SnapdClient) client = NULL; + g_autoptr(GPtrArray) interfaces = NULL; g_autoptr(GPtrArray) plugs = NULL; g_autoptr(GPtrArray) slots = NULL; + SnapdInterface *interface = NULL; gint added = 0; g_autoptr(GError) error = NULL; + g_autoptr(GError) interfaces_error = NULL; if (!g_str_has_prefix (app_id, PORTAL_SNAP_PREFIX)) return FALSE; @@ -634,6 +637,14 @@ add_snap_permissions (CcApplicationsPanel *self, g_assert (index >= 0); client = snapd_client_new (); + + interfaces = snapd_client_get_interfaces2_sync (client, + SNAPD_GET_INTERFACES_FLAGS_NONE, + NULL, + NULL, &interfaces_error); + if (interfaces == NULL) + g_warning ("Failed to get snap interfaces: %s", interfaces_error->message); + if (!snapd_client_get_connections2_sync (client, SNAPD_GET_CONNECTIONS_FLAGS_SELECT_ALL, NULL, NULL, @@ -641,7 +652,7 @@ add_snap_permissions (CcApplicationsPanel *self, &plugs, &slots, NULL, &error)) { - g_warning ("Failed to get snap interfaces: %s", error->message); + g_warning ("Failed to get snap connections: %s", error->message); return FALSE; } @@ -676,7 +687,17 @@ add_snap_permissions (CcApplicationsPanel *self, g_ptr_array_add (available_slots, g_object_ref (slot)); } - row = cc_snap_row_new (cc_panel_get_cancellable (CC_PANEL (self)), plug, available_slots); + if (interfaces != NULL) + { + for (int j = 0; j < interfaces->len; j++) + { + SnapdInterface *i = g_ptr_array_index (interfaces, j); + if (g_strcmp0 (snapd_interface_get_name (i), snapd_plug_get_interface (plug)) == 0) + interface = i; + } + } + + row = cc_snap_row_new (cc_panel_get_cancellable (CC_PANEL (self)), interface, plug, available_slots); gtk_widget_show (GTK_WIDGET (row)); gtk_list_box_insert (GTK_LIST_BOX (self->permission_list), GTK_WIDGET (row), index); index++; diff --git a/panels/applications/cc-snap-row.c b/panels/applications/cc-snap-row.c index d20faf6e4b6e904dd78dcba521211aeefe66b648..40a7fc4074e3baae49299a72084f12f5996c146c 100644 --- a/panels/applications/cc-snap-row.c +++ b/panels/applications/cc-snap-row.c @@ -48,127 +48,6 @@ typedef struct SnapdSlot *slot; } ConnectData; -static const gchar * -get_label (const gchar *interface_name) -{ - if (strcmp (interface_name, "account-control") == 0) - return _("Add user accounts and change passwords"); - else if (strcmp (interface_name, "alsa") == 0) - return _("Play and record sound"); - else if (strcmp (interface_name, "avahi-observe") == 0) - return _("Detect network devices using mDNS/DNS-SD (Bonjour/zeroconf)"); - else if (strcmp (interface_name, "bluetooth-control") == 0) - return _("Access bluetooth hardware directly"); - else if (strcmp (interface_name, "bluez") == 0) - return _("Use bluetooth devices"); - else if (strcmp (interface_name, "camera") == 0) - return _("Use your camera"); - else if (strcmp (interface_name, "cups-control") == 0) - return _("Print documents"); - else if (strcmp (interface_name, "joystick") == 0) - return _("Use any connected joystick"); - else if (strcmp (interface_name, "docker") == 0) - return _("Allow connecting to the Docker service"); - else if (strcmp (interface_name, "gsettings") == 0) - return _("Can change settings"); - else if (strcmp (interface_name, "firewall-control") == 0) - return _("Configure network firewall"); - else if (strcmp (interface_name, "fuse-support") == 0) - return _("Setup and use privileged FUSE filesystems"); - else if (strcmp (interface_name, "fwupd") == 0) - return _("Update firmware on this device"); - else if (strcmp (interface_name, "hardware-observe") == 0) - return _("Access hardware information"); - else if (strcmp (interface_name, "hardware-random-control") == 0) - return _("Provide entropy to hardware random number generator"); - else if (strcmp (interface_name, "hardware-random-observe") == 0) - return _("Use hardware-generated random numbers"); - else if (strcmp (interface_name, "home") == 0) - return _("Access files in your home folder"); - else if (strcmp (interface_name, "libvirt") == 0) - return _("Access libvirt service"); - else if (strcmp (interface_name, "locale-control") == 0) - return _("Change system language and region settings"); - else if (strcmp (interface_name, "location-control") == 0) - return _("Change location settings and providers"); - else if (strcmp (interface_name, "location-observe") == 0) - return _("Access your location"); - else if (strcmp (interface_name, "log-observe") == 0) - return _("Read system and application logs"); - else if (strcmp (interface_name, "lxd") == 0) - return _("Access LXD service"); - else if (strcmp (interface_name, "media-hub") == 0) - return _("access the media-hub service"); - else if (strcmp (interface_name, "modem-manager") == 0) - return _("Use and configure modems"); - else if (strcmp (interface_name, "mount-observe") == 0) - return _("Read system mount information and disk quotas"); - else if (strcmp (interface_name, "mpris") == 0) - return _("Control music and video players"); - else if (strcmp (interface_name, "network") == 0) - return _("Has network access"); - else if (strcmp (interface_name, "network-control") == 0) - return _("Change low-level network settings"); - else if (strcmp (interface_name, "network-manager") == 0) - return _("Access the NetworkManager service to read and change network settings"); - else if (strcmp (interface_name, "network-observe") == 0) - return _("Read access to network settings"); - else if (strcmp (interface_name, "network-setup-control") == 0) - return _("Change network settings"); - else if (strcmp (interface_name, "network-setup-observe") == 0) - return _("Read network settings"); - else if (strcmp (interface_name, "ofono") == 0) - return _("Access the ofono service to read and change network settings for mobile telephony"); - else if (strcmp (interface_name, "openvtswitch") == 0) - return _("Control Open vSwitch hardware"); - else if (strcmp (interface_name, "optical-drive") == 0) - return _("Read from CD/DVD"); - else if (strcmp (interface_name, "password-manager-service") == 0) - return _("Read, add, change, or remove saved passwords"); - else if (strcmp (interface_name, "ppp") == 0) - return _("Access pppd and ppp devices for configuring Point-to-Point Protocol connections"); - else if (strcmp (interface_name, "process-control") == 0) - return _("Pause or end any process on the system"); - else if (strcmp (interface_name, "pulseaudio") == 0) - return _("Play and record sound"); - else if (strcmp (interface_name, "raw-usb") == 0) - return _("Access USB hardware directly"); - else if (strcmp (interface_name, "removable-media") == 0) - return _("Read/write files on removable storage devices"); - else if (strcmp (interface_name, "screen-inhibit-control") == 0) - return _("Prevent screen sleep/lock"); - else if (strcmp (interface_name, "serial-port") == 0) - return _("Access serial port hardware"); - else if (strcmp (interface_name, "shutdown") == 0) - return _("Restart or power off the device"); - else if (strcmp (interface_name, "snapd-control") == 0) - return _("Install, remove and configure software"); - else if (strcmp (interface_name, "storage-framework-service") == 0) - return _("Access Storage Framework service"); - else if (strcmp (interface_name, "system-observe") == 0) - return _("Read process and system information"); - else if (strcmp (interface_name, "system-trace") == 0) - return _("Monitor and control any running program"); - else if (strcmp (interface_name, "time-control") == 0) - return _("Change the date and time"); - else if (strcmp (interface_name, "timeserver-control") == 0) - return _("Change time server settings"); - else if (strcmp (interface_name, "timezone-control") == 0) - return _("Change the time zone"); - else if (strcmp (interface_name, "udisks2") == 0) - return _("Access the UDisks2 service for configuring disks and removable media"); - else if (strcmp (interface_name, "unity8-calendar") == 0) - return _("Read/change shared calendar events in Ubuntu Unity 8"); - else if (strcmp (interface_name, "unity8-contacts") == 0) - return _("Read/change shared contacts in Ubuntu Unity 8"); - else if (strcmp (interface_name, "upower-observe") == 0) - return _("Access energy usage data"); - else if (strcmp (interface_name, "u2f-devices") == 0) - return _("Read/write access to U2F devices exposed"); - else - return interface_name; -} - static void update_state (CcSnapRow *self) { @@ -382,10 +261,11 @@ cc_snap_row_init (CcSnapRow *self) } CcSnapRow * -cc_snap_row_new (GCancellable *cancellable, SnapdPlug *plug, GPtrArray *slots) +cc_snap_row_new (GCancellable *cancellable, SnapdInterface *interface, SnapdPlug *plug, GPtrArray *slots) { CcSnapRow *self; GPtrArray *connected_slots; + g_autofree gchar *label = NULL; GtkTreeIter iter; g_return_val_if_fail (SNAPD_IS_PLUG (plug), NULL); @@ -411,7 +291,11 @@ cc_snap_row_new (GCancellable *cancellable, SnapdPlug *plug, GPtrArray *slots) } } - gtk_label_set_label (self->title_label, get_label (snapd_plug_get_interface (plug))); + if (interface != NULL) + label = snapd_interface_make_label (interface); + else + label = g_strdup (snapd_plug_get_interface (plug)); + gtk_label_set_label (self->title_label, label); /* Add option into combo box */ gtk_list_store_append (self->slots_combo_model, &iter); diff --git a/panels/applications/cc-snap-row.h b/panels/applications/cc-snap-row.h index 26563bd8dc65f3783d8b1567983e67815921735d..d37bb804f8b188e4d35f6ccc781969e760888c78 100644 --- a/panels/applications/cc-snap-row.h +++ b/panels/applications/cc-snap-row.h @@ -28,8 +28,9 @@ G_BEGIN_DECLS #define CC_TYPE_SNAP_ROW (cc_snap_row_get_type()) G_DECLARE_FINAL_TYPE (CcSnapRow, cc_snap_row, CC, SNAP_ROW, GtkListBoxRow) -CcSnapRow* cc_snap_row_new (GCancellable *cancellable, - SnapdPlug *plug, - GPtrArray *slots); +CcSnapRow* cc_snap_row_new (GCancellable *cancellable, + SnapdInterface *interface, + SnapdPlug *plug, + GPtrArray *slots); G_END_DECLS diff --git a/po/POTFILES.in b/po/POTFILES.in index e58a1bef5a78b1a4ad3c5cbf2fa1734818fabd78..92fb7393e52cefd83797c48e75aaf77d773a5fcc 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -2,7 +2,6 @@ # Please keep this file sorted alphabetically. panels/applications/cc-applications-panel.c panels/applications/cc-applications-panel.ui -panels/applications/cc-snap-row.c panels/applications/gnome-applications-panel.desktop.in.in panels/background/bg-colors-source.c panels/background/cc-background-chooser.c