summaryrefslogtreecommitdiff
path: root/distro-logo.patch
diff options
context:
space:
mode:
Diffstat (limited to 'distro-logo.patch')
-rw-r--r--distro-logo.patch195
1 files changed, 195 insertions, 0 deletions
diff --git a/distro-logo.patch b/distro-logo.patch
new file mode 100644
index 0000000..d59e43a
--- /dev/null
+++ b/distro-logo.patch
@@ -0,0 +1,195 @@
+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
+