You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

195 lines
7.8 KiB

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