[gnome-control-center/wip/hadess/version-xml: 1/2] info-overview: Load GNOME version from gnome-shell
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center/wip/hadess/version-xml: 1/2] info-overview: Load GNOME version from gnome-shell
- Date: Wed, 4 May 2022 07:59:18 +0000 (UTC)
commit ad7072cc978ec6bca0c5204e4d2c4acf753fc3bc
Author: Bastien Nocera <hadess hadess net>
Date: Wed May 4 09:54:34 2022 +0200
info-overview: Load GNOME version from gnome-shell
See https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5406
panels/info-overview/cc-info-overview-panel.c | 46 +++++++++++++++++++++++++--
1 file changed, 44 insertions(+), 2 deletions(-)
---
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index d2fc3cf0f..627006dc7 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -745,6 +745,41 @@ get_ram_size_dmi (void)
return ram_total;
}
+static void
+shell_proxy_ready (GObject *source,
+ GAsyncResult *res,
+ CcInfoOverviewPanel *self)
+{
+ g_autoptr(GDBusProxy) proxy = NULL;
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GVariant) variant = NULL;
+ const char *gnome_version = NULL;
+
+ proxy = cc_object_storage_create_dbus_proxy_finish (res, &error);
+ if (!proxy)
+ {
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
+ g_warning ("Failed to contact gnome-shell: %s", error->message);
+ goto fail;
+ }
+ return;
+ }
+
+ variant = g_dbus_proxy_get_cached_property (proxy, "ShellVersion");
+ if (!variant)
+ goto fail;
+ gnome_version = g_variant_get_string (variant, NULL);
+ if (!gnome_version || *gnome_version == '\0')
+ goto fail;
+ cc_list_row_set_secondary_label (self->gnome_version_row, gnome_version);
+ return;
+
+fail:
+ /* translators: this is the placeholder string when the GNOME Shell
+ * version couldn't be loaded, eg. “GNOME Version: Not Available†*/
+ cc_list_row_set_secondary_label (self->gnome_version_row, _("Not Available"));
+}
+
static void
info_overview_panel_setup_overview (CcInfoOverviewPanel *self)
{
@@ -757,8 +792,15 @@ info_overview_panel_setup_overview (CcInfoOverviewPanel *self)
g_autofree char *os_name_text = NULL;
g_autofree gchar *graphics_hardware_string = NULL;
- if (load_gnome_version (&gnome_version))
- cc_list_row_set_secondary_label (self->gnome_version_row, gnome_version);
+ cc_object_storage_create_dbus_proxy (G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS |
+ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
+ "org.gnome.Shell",
+ "/org/gnome/Shell",
+ "org.gnome.Shell",
+ cc_panel_get_cancellable (CC_PANEL (self)),
+ (GAsyncReadyCallback) shell_proxy_ready,
+ self);
cc_list_row_set_secondary_label (self->windowing_system_row, get_windowing_system ());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]