From aba2fd8da7ee7edea1d0c76bad212daa66fafdf0 Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Feb 16 2018 17:46:07 +0000 Subject: Upgrade to 3.27.90 and add reduce initial setup redundancy patches --- diff --git a/.gitignore b/.gitignore index 15caba6..83e932c 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ /gnome-initial-setup-3.25.4.tar.xz /gnome-initial-setup-3.25.92.tar.xz /gnome-initial-setup-3.26.0.tar.xz +/gnome-initial-setup-3.27.90.tar.xz diff --git a/enhanced-page-skipping.patch b/enhanced-page-skipping.patch new file mode 100644 index 0000000..2f06e8b --- /dev/null +++ b/enhanced-page-skipping.patch @@ -0,0 +1,98 @@ +From a477f87d4883c383dd8bac61193b81ad0d85a77c Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Thu, 15 Feb 2018 21:12:08 -0600 +Subject: [PATCH 2/2] Allow skipping pages only in new/existing user modes + +This makes the skip file a bit more powerful. Instead of specifying +pages that will always be skipped, it's now possible to specify pages to +be skipped in just new user mode or just existing user mode. This way we +can hide pages that are redundant with distro installers in new user +mode (firstboot), but still show them otherwise. + +To skip a page always, like Endless has been doing, just put it in +both sections. + +https://bugzilla.gnome.org/show_bug.cgi?id=793501 +--- + gnome-initial-setup/gnome-initial-setup.c | 28 ++++++++++++++++------------ + 1 file changed, 16 insertions(+), 12 deletions(-) + +diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c +index 6cca10b..622fb82 100644 +--- a/gnome-initial-setup/gnome-initial-setup.c ++++ b/gnome-initial-setup/gnome-initial-setup.c +@@ -49,8 +49,9 @@ + #include "pages/password/gis-password-page.h" + #include "pages/summary/gis-summary-page.h" + +-#define VENDOR_PAGES_GROUP "pages" +-#define VENDOR_PAGES_SKIP_KEY "skip" ++#define VENDOR_NEW_USER_GROUP "new user" ++#define VENDOR_EXISTING_USER_GROUP "existing user" ++#define VENDOR_SKIP_KEY "skip" + + static gboolean force_existing_user_mode; + +@@ -101,20 +102,23 @@ should_skip_page (GisDriver *driver, + } + + static gchar ** +-pages_to_skip_from_file (void) ++pages_to_skip_from_file (gboolean is_new_user) + { + GKeyFile *skip_pages_file; + gchar **skip_pages = NULL; + GError *error = NULL; + + /* VENDOR_CONF_FILE points to a keyfile containing vendor customization +- * options. This code will look for options under the "pages" group, and +- * supports the following keys: ++ * options. This code will look for options under the "new user" and ++ * "existing user" groups, and supports the following keys: + * - skip (optional): list of pages to be skipped. + * +- * This is how this file would look on a vendor image: ++ * This is how this file might look on a vendor image: + * +- * [pages] ++ * [new user] ++ * skip=language;keyboard ++ * ++ * [existing user] + * skip=language + */ + skip_pages_file = g_key_file_new (); +@@ -127,8 +131,9 @@ pages_to_skip_from_file (void) + goto out; + } + +- skip_pages = g_key_file_get_string_list (skip_pages_file, VENDOR_PAGES_GROUP, +- VENDOR_PAGES_SKIP_KEY, NULL, NULL); ++ skip_pages = g_key_file_get_string_list (skip_pages_file, ++ is_new_user ? VENDOR_NEW_USER_GROUP : VENDOR_EXISTING_USER_GROUP, ++ VENDOR_SKIP_KEY, NULL, NULL); + + out: + g_key_file_free (skip_pages_file); +@@ -166,9 +171,6 @@ rebuild_pages_cb (GisDriver *driver) + + assistant = gis_driver_get_assistant (driver); + current_page = gis_assistant_get_current_page (assistant); +- +- skip_pages = pages_to_skip_from_file (); +- + page_data = page_table; + + if (current_page != NULL) { +@@ -182,6 +184,8 @@ rebuild_pages_cb (GisDriver *driver) + } + + is_new_user = (gis_driver_get_mode (driver) == GIS_DRIVER_MODE_NEW_USER); ++ skip_pages = pages_to_skip_from_file (is_new_user); ++ + for (; page_data->page_id != NULL; ++page_data) { + if (page_data->new_user_only && !is_new_user) + continue; +-- +2.14.3 + diff --git a/gnome-initial-setup.spec b/gnome-initial-setup.spec index 927a1f0..cbf56e8 100644 --- a/gnome-initial-setup.spec +++ b/gnome-initial-setup.spec @@ -5,14 +5,17 @@ %global geoclue_version 2.3.1 Name: gnome-initial-setup -Version: 3.26.0 -Release: 5%{?dist} +Version: 3.27.90 +Release: 1%{?dist} Summary: Bootstrapping your OS License: GPLv2+ URL: https://wiki.gnome.org/Design/OS/InitialSetup -Source0: https://download.gnome.org/sources/%{name}/3.26/%{name}-%{version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/3.27/%{name}-%{version}.tar.xz Patch0: honor-firstboot-disabled.patch +# https://bugzilla.gnome.org/show_bug.cgi?id=793501 +Patch1: welcome-screen.patch +Patch2: enhanced-page-skipping.patch BuildRequires: krb5-devel BuildRequires: desktop-file-utils @@ -64,8 +67,7 @@ a good setup experience to welcome you to your system, and walks you through configuring it. It is integrated with gdm. %prep -%setup -q -%patch0 -p1 +%autosetup -p1 %build %configure --enable-software-sources @@ -106,6 +108,9 @@ useradd -rM -d /run/gnome-initial-setup/ -s /sbin/nologin %{name} &>/dev/null || %{_datadir}/polkit-1/rules.d/20-gnome-initial-setup.rules %changelog +* Fri Feb 16 2018 Michael Catanzaro - 3.27.90-1 +- Upgrade to 3.27.90 and add reduce initial setup redundancy patches + * Tue Feb 13 2018 Björn Esser - 3.26.0-5 - Rebuild against newer gnome-desktop3 package diff --git a/sources b/sources index ae97e2c..441296f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-initial-setup-3.26.0.tar.xz) = 5ed7a21e21cdcdc0f13d8d24acce1c0779d48bedac514642615b1df50340be9c8d0443c43396a0419d0b86ba97df391ce161dd03b1591ef6d73fb5318ffd06c1 +SHA512 (gnome-initial-setup-3.27.90.tar.xz) = e3e0ee598df9b57380fd2eeb30a2f45135b9aa7c002c1be1c9dd2c37a1cef97645089794541d08bd3254d8852a7b8cd118529fcdd25418a2f44d9a87f398fb91 diff --git a/welcome-screen.patch b/welcome-screen.patch new file mode 100644 index 0000000..7784ae4 --- /dev/null +++ b/welcome-screen.patch @@ -0,0 +1,233 @@ +From 19fe2ffa60b4998be6a77c69e449b30c2df99fb1 Mon Sep 17 00:00:00 2001 +From: Michael Catanzaro +Date: Thu, 15 Feb 2018 21:08:38 -0600 +Subject: [PATCH 1/2] Show welcome screen if language page is skipped + +We can't *really* skip the language page, because we need to display some +sort of welcome screen. In this case, let's just hide the language +selection element. To make this look decent, the icon needs to be a bit +bigger, and we need to center everything. Turns out, these changes look +fine even when the language page is not skipped, so they don't need to +be conditional on that. + +https://bugzilla.gnome.org/show_bug.cgi?id=793501 +--- + gnome-initial-setup/gnome-initial-setup.c | 7 +- + .../pages/language/gis-language-page.c | 113 +++++++++++++++++---- + .../pages/language/gis-language-page.h | 1 + + .../pages/language/gis-language-page.ui | 6 +- + 4 files changed, 102 insertions(+), 25 deletions(-) + +diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c +index 5671cae..6cca10b 100644 +--- a/gnome-initial-setup/gnome-initial-setup.c ++++ b/gnome-initial-setup/gnome-initial-setup.c +@@ -186,8 +186,13 @@ rebuild_pages_cb (GisDriver *driver) + if (page_data->new_user_only && !is_new_user) + continue; + +- if (should_skip_page (driver, page_data->page_id, skip_pages)) ++ if (should_skip_page (driver, page_data->page_id, skip_pages)) { ++ /* Language page is special, because we always want to show the greeeting ++ * even if this page is to be skipped. */ ++ if (strcmp (page_data->page_id, "language") == 0) ++ gis_prepare_language_page_without_language_selection (driver); + continue; ++ } + + page_data->prepare_page_func (driver); + } +diff --git a/gnome-initial-setup/pages/language/gis-language-page.c b/gnome-initial-setup/pages/language/gis-language-page.c +index ea94c82..2349103 100644 +--- a/gnome-initial-setup/pages/language/gis-language-page.c ++++ b/gnome-initial-setup/pages/language/gis-language-page.c +@@ -45,6 +45,7 @@ struct _GisLanguagePagePrivate + GtkWidget *logo; + GtkWidget *welcome_widget; + GtkWidget *language_chooser; ++ gboolean show_language_chooser; + + GDBusProxy *localed; + GPermission *permission; +@@ -56,6 +57,53 @@ typedef struct _GisLanguagePagePrivate GisLanguagePagePrivate; + + G_DEFINE_TYPE_WITH_PRIVATE (GisLanguagePage, gis_language_page, GIS_TYPE_PAGE); + ++enum ++{ ++ PROP_0, ++ PROP_SHOW_LANGUAGE_CHOOSER, ++ PROP_LAST, ++}; ++ ++static GParamSpec *obj_props[PROP_LAST]; ++ ++static void ++gis_language_page_get_property (GObject *object, ++ guint prop_id, ++ GValue *value, ++ GParamSpec *pspec) ++{ ++ GisLanguagePage *page = GIS_LANGUAGE_PAGE (object); ++ GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (page); ++ switch (prop_id) ++ { ++ case PROP_SHOW_LANGUAGE_CHOOSER: ++ g_value_set_boolean (value, priv->show_language_chooser); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gis_language_page_set_property (GObject *object, ++ guint prop_id, ++ const GValue *value, ++ GParamSpec *pspec) ++{ ++ GisLanguagePage *page = GIS_LANGUAGE_PAGE (object); ++ GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (page); ++ switch (prop_id) ++ { ++ case PROP_SHOW_LANGUAGE_CHOOSER: ++ priv->show_language_chooser = g_value_get_boolean (value); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ + static void + set_localed_locale (GisLanguagePage *self) + { +@@ -259,28 +307,33 @@ gis_language_page_constructed (GObject *object) + + update_distro_logo (page); + +- g_signal_connect (priv->language_chooser, "notify::language", +- G_CALLBACK (language_changed), page); +- g_signal_connect (priv->language_chooser, "confirm", +- G_CALLBACK (language_confirmed), page); +- +- /* If we're in new user mode then we're manipulating system settings */ +- if (gis_driver_get_mode (GIS_PAGE (page)->driver) == GIS_DRIVER_MODE_NEW_USER) ++ if (priv->show_language_chooser) + { +- priv->permission = polkit_permission_new_sync ("org.freedesktop.locale1.set-locale", NULL, NULL, NULL); +- +- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); +- g_dbus_proxy_new (bus, +- G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES, +- NULL, +- "org.freedesktop.locale1", +- "/org/freedesktop/locale1", +- "org.freedesktop.locale1", +- priv->cancellable, +- (GAsyncReadyCallback) localed_proxy_ready, +- object); +- g_object_unref (bus); +- } ++ gtk_widget_show (priv->language_chooser); ++ ++ g_signal_connect (priv->language_chooser, "notify::language", ++ G_CALLBACK (language_changed), page); ++ g_signal_connect (priv->language_chooser, "confirm", ++ G_CALLBACK (language_confirmed), page); ++ ++ /* If we're in new user mode then we're manipulating system settings */ ++ if (gis_driver_get_mode (GIS_PAGE (page)->driver) == GIS_DRIVER_MODE_NEW_USER) ++ { ++ priv->permission = polkit_permission_new_sync ("org.freedesktop.locale1.set-locale", NULL, NULL, NULL); ++ ++ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); ++ g_dbus_proxy_new (bus, ++ G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES, ++ NULL, ++ "org.freedesktop.locale1", ++ "/org/freedesktop/locale1", ++ "org.freedesktop.locale1", ++ priv->cancellable, ++ (GAsyncReadyCallback) localed_proxy_ready, ++ object); ++ g_object_unref (bus); ++ } ++ } + + gis_page_set_complete (GIS_PAGE (page), TRUE); + gtk_widget_show (GTK_WIDGET (page)); +@@ -321,6 +374,14 @@ gis_language_page_class_init (GisLanguagePageClass *klass) + page_class->locale_changed = gis_language_page_locale_changed; + object_class->constructed = gis_language_page_constructed; + object_class->dispose = gis_language_page_dispose; ++ object_class->get_property = gis_language_page_get_property; ++ object_class->set_property = gis_language_page_set_property; ++ ++ obj_props[PROP_SHOW_LANGUAGE_CHOOSER] = ++ g_param_spec_boolean ("show-language-chooser", "", "", TRUE, ++ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); ++ ++ g_object_class_install_properties (object_class, PROP_LAST, obj_props); + } + + static void +@@ -341,3 +402,13 @@ gis_prepare_language_page (GisDriver *driver) + "driver", driver, + NULL)); + } ++ ++void ++gis_prepare_language_page_without_language_selection (GisDriver *driver) ++{ ++ gis_driver_add_page (driver, ++ g_object_new (GIS_TYPE_LANGUAGE_PAGE, ++ "driver", driver, ++ "show-language-chooser", FALSE, ++ NULL)); ++} +diff --git a/gnome-initial-setup/pages/language/gis-language-page.h b/gnome-initial-setup/pages/language/gis-language-page.h +index 37b33ab..a3a30f3 100644 +--- a/gnome-initial-setup/pages/language/gis-language-page.h ++++ b/gnome-initial-setup/pages/language/gis-language-page.h +@@ -51,6 +51,7 @@ struct _GisLanguagePageClass + GType gis_language_page_get_type (void); + + void gis_prepare_language_page (GisDriver *driver); ++void gis_prepare_language_page_without_language_selection (GisDriver *driver); + + G_END_DECLS + +diff --git a/gnome-initial-setup/pages/language/gis-language-page.ui b/gnome-initial-setup/pages/language/gis-language-page.ui +index 1b98a6d..50605a3 100644 +--- a/gnome-initial-setup/pages/language/gis-language-page.ui ++++ b/gnome-initial-setup/pages/language/gis-language-page.ui +@@ -7,13 +7,13 @@ + True + vertical + center +- fill ++ center + + + +@@ -30,7 +30,7 @@ + + 18 + 400 +- True ++ False + start + + +-- +2.14.3 +