Blob Blame History Raw
From 4369e31ec541172e1c0d7c64645c7990e413bbca Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@gnome.org>
Date: Tue, 9 Mar 2021 14:51:54 -0600
Subject: [PATCH 1/3] info-overview: add build option to control distributor
 logo

Currently, we display a 256x256 version of the OS icon from
/etc/os-release. This is too big for my taste, and it's also not
sufficient for distros that want to display a logo that is not an icon.
For instance, because we no longer display the operating system name
immediately beneath the logo, it may be desirable to use a logo variant
that includes text. This patch adds a meson build option that
distributions can use to override the logo.

Because the logo might include text, distributions may want to vary the
logo used in dark mode. A subsequent commit will add a second option for
this.
---
 meson.build                                   | 6 ++++++
 meson_options.txt                             | 1 +
 panels/info-overview/cc-info-overview-panel.c | 4 ++++
 3 files changed, 11 insertions(+)

diff --git a/meson.build b/meson.build
index e8333c0da..1661caa4b 100644
--- a/meson.build
+++ b/meson.build
@@ -50,6 +50,12 @@ foreach define: set_defines
   config_h.set_quoted(define[0], define[1])
 endforeach
 
+distributor_logo = get_option('distributor_logo')
+if (distributor_logo != '')
+  config_h.set_quoted('DISTRIBUTOR_LOGO', distributor_logo,
+                      description: 'Define to absolute path of distributor logo')
+endif
+
 # meson does not support octal values, so it must be handled as a
 # string. See: https://github.com/mesonbuild/meson/issues/2047
 config_h.set('USER_DIR_MODE', '0700',
diff --git a/meson_options.txt b/meson_options.txt
index 1b7b54810..93e551373 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -8,3 +8,4 @@ option('tracing', type: 'boolean', value: false, description: 'add extra debuggi
 option('wayland', type: 'boolean', value: true, description: 'build with Wayland support')
 option('profile', type: 'combo', choices: ['default','development'], value: 'default')
 option('malcontent', type: 'boolean', value: false, description: 'build with malcontent support')
+option('distributor_logo', type: 'string', description: 'absolute path to distributor logo for the About panel')
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index bd0e07762..95a5904df 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -869,6 +869,9 @@ cc_info_panel_row_activated_cb (CcInfoOverviewPanel *self,
 static void
 setup_os_logo (CcInfoOverviewPanel *panel)
 {
+#ifdef DISTRIBUTOR_LOGO
+  gtk_image_set_from_file (panel->os_logo, DISTRIBUTOR_LOGO);
+#else
   g_autofree char *logo_name = g_get_os_info ("LOGO");
   if (logo_name != NULL)
     {
@@ -879,6 +882,7 @@ setup_os_logo (CcInfoOverviewPanel *panel)
     {
       gtk_image_set_from_resource (panel->os_logo, "/org/gnome/control-center/info-overview/GnomeLogoVerticalMedium.svg");
     }
+#endif
 }
 
 static void
-- 
GitLab


From f08669767ca87ff99fc08e1a7334c8f2e7f18f0b Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@gnome.org>
Date: Tue, 9 Mar 2021 16:02:46 -0600
Subject: [PATCH 2/3] info-overview: add build option to specify a dark mode
 logo variant

Let's allow distributions to specify a different logo to use when using
a dark GTK theme. This is best-effort only since it relies on the
convention that dark themes must end with "dark" and therefore will fail
for a theme named "midnight" or anything that doesn't match convention.
---
 meson.build                                   |  5 ++++
 meson_options.txt                             |  1 +
 panels/info-overview/cc-info-overview-panel.c | 27 +++++++++++++++++++
 3 files changed, 33 insertions(+)

diff --git a/meson.build b/meson.build
index 1661caa4b..124171626 100644
--- a/meson.build
+++ b/meson.build
@@ -54,6 +54,11 @@ distributor_logo = get_option('distributor_logo')
 if (distributor_logo != '')
   config_h.set_quoted('DISTRIBUTOR_LOGO', distributor_logo,
                       description: 'Define to absolute path of distributor logo')
+  dark_mode_distributor_logo = get_option('dark_mode_distributor_logo')
+  if (dark_mode_distributor_logo != '')
+    config_h.set_quoted('DARK_MODE_DISTRIBUTOR_LOGO', dark_mode_distributor_logo,
+                        description: 'Define to absolute path of distributor logo for use in dark mode')
+  endif
 endif
 
 # meson does not support octal values, so it must be handled as a
diff --git a/meson_options.txt b/meson_options.txt
index 93e551373..5305c8606 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -9,3 +9,4 @@ option('wayland', type: 'boolean', value: true, description: 'build with Wayland
 option('profile', type: 'combo', choices: ['default','development'], value: 'default')
 option('malcontent', type: 'boolean', value: false, description: 'build with malcontent support')
 option('distributor_logo', type: 'string', description: 'absolute path to distributor logo for the About panel')
+option('dark_mode_distributor_logo', type: 'string', description: 'absolute path to distributor logo dark mode variant')
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index 95a5904df..cb20e16b1 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -866,10 +866,37 @@ cc_info_panel_row_activated_cb (CcInfoOverviewPanel *self,
     open_software_update (self);
 }
 
+#ifdef DARK_MODE_DISTRIBUTOR_LOGO
+static gboolean
+is_dark_mode (CcInfoOverviewPanel *panel)
+{
+  GdkScreen *screen;
+  GtkSettings *settings;
+  g_autofree char *theme_name = NULL;
+
+  theme_name = g_strdup (g_getenv ("GTK_THEME"));
+  if (theme_name != NULL)
+    return g_str_has_suffix (theme_name, "dark");
+
+  screen = gtk_widget_get_screen (GTK_WIDGET (panel));
+  settings = gtk_settings_get_for_screen (screen);
+
+  g_object_get (settings, "gtk-theme-name", &theme_name, NULL);
+  return theme_name != NULL && g_str_has_suffix (theme_name, "dark");
+}
+#endif
+
 static void
 setup_os_logo (CcInfoOverviewPanel *panel)
 {
 #ifdef DISTRIBUTOR_LOGO
+#ifdef DARK_MODE_DISTRIBUTOR_LOGO
+  if (is_dark_mode (panel))
+    {
+      gtk_image_set_from_file (panel->os_logo, DARK_MODE_DISTRIBUTOR_LOGO);
+      return;
+    }
+#endif
   gtk_image_set_from_file (panel->os_logo, DISTRIBUTOR_LOGO);
 #else
   g_autofree char *logo_name = g_get_os_info ("LOGO");
-- 
GitLab


From c379ccc4e8f0bcdee78361f134ba29d3a25f7528 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@gnome.org>
Date: Wed, 10 Mar 2021 11:30:57 -0600
Subject: [PATCH 3/3] info-overview: reduce size of logo when using icon from
 /etc/os-release

When using the icon from /etc/os-release, display it as 128x128 rather
than 256x256. In distributions that don't ship a 128x128, such as
Fedora, this results in the 256x256 icon being scaled down to a
reasonable size. 256x256 is so large here as to be clearly undesirable.
128x128 is also the size that Ubuntu uses in its downstream patch. Might
as well reduce the need for patching as far as possible, even though
Fedora doesn't plan to use this codepath.
---
 panels/info-overview/cc-info-overview-panel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index cb20e16b1..3575b90c5 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -903,7 +903,7 @@ setup_os_logo (CcInfoOverviewPanel *panel)
   if (logo_name != NULL)
     {
       gtk_image_set_from_icon_name (panel->os_logo, logo_name, GTK_ICON_SIZE_INVALID);
-      gtk_image_set_pixel_size (panel->os_logo, 256);
+      gtk_image_set_pixel_size (panel->os_logo, 128);
     }
   else
     {
-- 
GitLab