From dca476da264dcb2c2ca748881ac3690ff95e6316 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Mon, 19 May 2025 09:51:36 +0000 Subject: [PATCH] import CS gnome-initial-setup-46.alpha-15.el10 --- .gitignore | 2 +- .gnome-initial-setup.metadata | 1 - 0001-RHEL10-style-illustrations.patch | 2119 ++ SOURCES/allow-weak-passwords.patch | 30 - ...l-setup-3.28.0-fix-japanese-defaults.patch | 91 - ...3.28.0-fix-legacy-faces-missing-icon.patch | 200 - SOURCES/honor-firstboot-disabled.patch | 88 - SOURCES/quacks-like-fedora.patch | 24 - SOURCES/reduce-initial-setup-redundancy.patch | 974 - SOURCES/timezones.patch | 18352 ---------------- SPECS/gnome-initial-setup.spec | 481 - gnome-initial-setup.spec | 890 + sources | 1 + SOURCES/vendor.conf => vendor.conf | 0 14 files changed, 3011 insertions(+), 20242 deletions(-) delete mode 100644 .gnome-initial-setup.metadata create mode 100644 0001-RHEL10-style-illustrations.patch delete mode 100644 SOURCES/allow-weak-passwords.patch delete mode 100644 SOURCES/gnome-initial-setup-3.28.0-fix-japanese-defaults.patch delete mode 100644 SOURCES/gnome-initial-setup-3.28.0-fix-legacy-faces-missing-icon.patch delete mode 100644 SOURCES/honor-firstboot-disabled.patch delete mode 100644 SOURCES/quacks-like-fedora.patch delete mode 100644 SOURCES/reduce-initial-setup-redundancy.patch delete mode 100644 SOURCES/timezones.patch delete mode 100644 SPECS/gnome-initial-setup.spec create mode 100644 gnome-initial-setup.spec create mode 100644 sources rename SOURCES/vendor.conf => vendor.conf (100%) diff --git a/.gitignore b/.gitignore index ddb4942..ba33f7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/gnome-initial-setup-3.28.0.tar.xz +gnome-initial-setup-46.alpha.tar.xz diff --git a/.gnome-initial-setup.metadata b/.gnome-initial-setup.metadata deleted file mode 100644 index 01d9151..0000000 --- a/.gnome-initial-setup.metadata +++ /dev/null @@ -1 +0,0 @@ -79d6f8ce89086aba95c1fd519053af523d4409ea SOURCES/gnome-initial-setup-3.28.0.tar.xz diff --git a/0001-RHEL10-style-illustrations.patch b/0001-RHEL10-style-illustrations.patch new file mode 100644 index 0000000..a0604c6 --- /dev/null +++ b/0001-RHEL10-style-illustrations.patch @@ -0,0 +1,2119 @@ +From 66ee3493af1da7fd07c02f3da9fd25a0accfcea0 Mon Sep 17 00:00:00 2001 +From: Jakub Steiner +Date: Tue, 20 Aug 2024 15:19:35 +0200 +Subject: [PATCH] RHEL10 style illustrations + +--- + .../pages/summary/ready-to-go.svg | 150 +- + .../pages/welcome/initial-setup-welcome.svg | 1886 +++++------------ + 2 files changed, 719 insertions(+), 1317 deletions(-) + +diff --git a/gnome-initial-setup/pages/summary/ready-to-go.svg b/gnome-initial-setup/pages/summary/ready-to-go.svg +index 9ad6af4c..d3238563 100644 +--- a/gnome-initial-setup/pages/summary/ready-to-go.svg ++++ b/gnome-initial-setup/pages/summary/ready-to-go.svg +@@ -1 +1,149 @@ +- +\ No newline at end of file ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/gnome-initial-setup/pages/welcome/initial-setup-welcome.svg b/gnome-initial-setup/pages/welcome/initial-setup-welcome.svg +index 74a7eec0..f22d1db6 100644 +--- a/gnome-initial-setup/pages/welcome/initial-setup-welcome.svg ++++ b/gnome-initial-setup/pages/welcome/initial-setup-welcome.svg +@@ -2,14 +2,36 @@ + ++ + + +@@ -319,7 +341,7 @@ + id="linearGradient58186" + x1="219.33958" + y1="85.201027" +- x2="258.7625" ++ x2="258.76251" + y2="85.201027" + gradientUnits="userSpaceOnUse" /> + + +- +- +- +- +- ++ + +- +- +- +- +- +- +- ++ d="m 0.5,0 h 1920 V 1080 H 0.5 Z" ++ transform="matrix(1.3333333,0,0,-1.3333333,18746.667,1440)" ++ id="path820" /> ++ ++ + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-1212.5425,-413.30561)" ++ id="path758" /> ++ ++ + +- ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-2034.4901,-413.30561)" ++ id="path759" /> ++ ++ + +- +- +- +- +- +- +- +- +- ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-1800.8155,-363.95301)" ++ id="path760" /> ++ ++ + ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-1536.8673,-356.85521)" ++ id="path761" /> ++ ++ + ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-1344.0865,60.252602)" ++ id="path762" /> ++ ++ + +- +- +- +- ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-1447.9758,47.128576)" ++ id="path763" /> ++ ++ + ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-2166.0341,60.252602)" ++ id="path764" /> ++ ++ + ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-1022.1535,-187.33658)" ++ id="path765" /> ++ ++ + ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-1844.101,-187.33658)" ++ id="path766" /> ++ ++ ++ ++ ++ + ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-1008.133,-20.844001)" ++ id="path768" /> ++ ++ + ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-2358.8156,-390.21271)" ++ id="path769" /> ++ ++ + +- +- ++ d="M 459.384,1182.8 H 3193.59 V -197.556 H 459.384 Z" ++ transform="translate(-1516.5483,-185.63738)" ++ id="path770" /> ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ transform="matrix(1.2317356,0,0,1.2317356,-327.6169,93.297611)" ++ style="display:inline;stroke-width:0.959464;enable-background:new" ++ id="g65" /> + +- +- +- +- +- +- ++ id="g4" ++ transform="matrix(0.61871582,0,0,0.61871582,235.77609,8.7849124)"> + +- +- +- ++ id="path533" ++ d="M 819.3578,384.4808 430.34181,600.60079 41.327153,384.4808 430.34181,168.36081" ++ style="fill:none;stroke:#ee0000;stroke-width:46.7933;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /> + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ id="path534" ++ d="M 819.3578,742.49747 430.34181,958.61746 41.327153,742.49747 202.43382,652.99347" ++ style="fill:none;stroke:#ee0000;stroke-width:46.7933;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" /> ++ ++ ++ ++ + + ++ opacity="0.5" ++ id="g819" ++ clip-path="url(#clipPath820)" ++ transform="matrix(0.59163653,0,0,0.59163653,-10521.814,-2.1298915e-5)" ++ style="stroke-width:1.69023"> + ++ d="m 0,0 -174.068,-96.414 c -7.608,-4.213 -16.848,-4.213 -24.456,0 L -372.357,-0.13 c -9.818,5.438 -9.818,19.554 0,24.992 l 173.636,96.174 c 7.73,4.282 17.12,4.282 24.85,0 L 0,24.731 C 9.716,19.35 9.716,5.381 0,0 Z" ++ style="fill:none;stroke:#c9c9c9;stroke-width:10.1414;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0,28.7389;stroke-dashoffset:0;stroke-opacity:1;font-variation-settings:normal;opacity:1;vector-effect:none;fill-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" ++ transform="matrix(1.3333333,0,0,-1.3333333,20363.39,888.92587)" ++ clip-path="url(#clipPath758)" ++ id="path789" /> + ++ d="m 0,0 -174.068,-96.414 c -7.608,-4.213 -16.848,-4.213 -24.456,0 L -372.357,-0.13 c -9.818,5.438 -9.818,19.554 0,24.992 l 173.636,96.174 c 7.73,4.282 17.12,4.282 24.85,0 L 0,24.731 C 9.716,19.35 9.716,5.381 0,0 Z" ++ style="fill:none;stroke:#c9c9c9;stroke-width:10.1414;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0,28.7389;stroke-dashoffset:0;stroke-opacity:1;font-variation-settings:normal;opacity:1;vector-effect:none;fill-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" ++ transform="matrix(1.3333333,0,0,-1.3333333,21459.32,888.92587)" ++ clip-path="url(#clipPath759)" ++ id="path790" /> + ++ d="m 0,0 -174.068,-96.414 c -7.608,-4.213 -16.848,-4.213 -24.456,0 L -372.357,-0.13 c -9.818,5.438 -9.818,19.554 0,24.992 l 173.636,96.174 c 7.73,4.282 17.12,4.282 24.85,0 L 0,24.732 C 9.716,19.35 9.716,5.381 0,0 Z" ++ style="fill:none;stroke:#c9c9c9;stroke-width:10.1414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;font-variation-settings:normal;opacity:1;vector-effect:none;fill-opacity:1;stroke-dashoffset:0;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" ++ transform="matrix(1.3333333,0,0,-1.3333333,21147.754,954.72933)" ++ clip-path="url(#clipPath760)" ++ id="path791" /> + +- +- +- +- +- +- ++ d="m 0,0 -234.78,-130.041 c -10.261,-5.683 -22.724,-5.683 -32.985,0 L -502.227,-0.176 c -13.243,7.335 -13.243,26.375 0,33.709 l 234.196,129.718 c 10.426,5.775 23.091,5.775 33.518,0 L 0,33.358 C 13.104,26.099 13.104,7.258 0,0 Z" ++ style="fill:none;stroke:#c9c9c9;stroke-width:10.1414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;font-variation-settings:normal;opacity:1;vector-effect:none;fill-opacity:1;stroke-dashoffset:0;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" ++ transform="matrix(1.3333333,0,0,-1.3333333,20795.823,964.19307)" ++ clip-path="url(#clipPath761)" ++ id="path792" /> + ++ d="m 0,0 -234.78,-130.041 c -10.261,-5.683 -22.724,-5.683 -32.985,0 L -502.227,-0.176 c -13.243,7.335 -13.243,26.375 0,33.709 l 234.196,129.718 c 10.426,5.775 23.091,5.775 33.518,0 L 0,33.358 C 13.104,26.099 13.104,7.258 0,0 Z" ++ style="fill:none;stroke:#c9c9c9 icc-color(sRGB-IEC61966-2, 0.1, 0.78799438, 0.78799438, 0.78799438);stroke-width:10.1414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" ++ transform="matrix(1.3333333,0,0,-1.3333333,20538.782,1520.3368)" ++ clip-path="url(#clipPath762)" ++ id="path793" /> + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ d="m 0,0 -132.029,-73.129 c -5.77,-3.196 -12.779,-3.196 -18.549,0 l -131.851,73.03 c -7.446,4.125 -7.446,14.832 0,18.957 l 131.701,72.946 c 5.863,3.248 12.986,3.248 18.849,0 L 0,18.759 C 7.369,14.677 7.369,4.082 0,0 Z" ++ style="fill:none;stroke:#c9c9c9 icc-color(sRGB-IEC61966-2, 0.1, 0.78799438, 0.78799438, 0.78799438);stroke-width:10.1414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" ++ transform="matrix(1.3333333,0,0,-1.3333333,20677.301,1502.8381)" ++ clip-path="url(#clipPath763)" ++ id="path794" /> ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + ++ d="m 0,0 -195.801,-108.451 c -8.557,-4.74 -18.951,-4.74 -27.508,0 L -418.845,-0.147 c -11.044,6.117 -11.044,21.996 0,28.113 l 195.313,108.181 c 8.696,4.817 19.258,4.817 27.954,0 L 0,27.819 C 10.928,21.766 10.928,6.053 0,0 Z" ++ style="fill:none;stroke:#c9c9c9;stroke-width:10.1414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;font-variation-settings:normal;opacity:1;vector-effect:none;fill-opacity:1;stroke-dashoffset:0;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" ++ transform="matrix(1.3333333,0,0,-1.3333333,21706.501,336.156)" ++ clip-path="url(#clipPath788)" ++ id="path819" /> + +- +- + +-- +2.45.2 + diff --git a/SOURCES/allow-weak-passwords.patch b/SOURCES/allow-weak-passwords.patch deleted file mode 100644 index c3203c3..0000000 --- a/SOURCES/allow-weak-passwords.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 985f2a009ddf5179482e7551400cf8065553707e Mon Sep 17 00:00:00 2001 -From: Michael Catanzaro -Date: Wed, 11 Apr 2018 22:16:54 -0500 -Subject: Revert "Revert "Don't hard-enforce strong passwords"" - -This reverts commit 0c67a9800c7832dd55c046adc372833a96a96cf0. - -This is a requirement for Fedora, but I suspect few distros want to -irritate users right off the bat by dictating which passwords may be -used. ---- - gnome-initial-setup/pages/password/gis-password-page.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gnome-initial-setup/pages/password/gis-password-page.c b/gnome-initial-setup/pages/password/gis-password-page.c -index cf3db9e..731666d 100644 ---- a/gnome-initial-setup/pages/password/gis-password-page.c -+++ b/gnome-initial-setup/pages/password/gis-password-page.c -@@ -59,7 +59,7 @@ page_validate (GisPasswordPage *page) - { - GisPasswordPagePrivate *priv = gis_password_page_get_instance_private (page); - -- return priv->valid_confirm && priv->valid_password; -+ return priv->valid_confirm; - } - - static void --- -cgit v0.12 - diff --git a/SOURCES/gnome-initial-setup-3.28.0-fix-japanese-defaults.patch b/SOURCES/gnome-initial-setup-3.28.0-fix-japanese-defaults.patch deleted file mode 100644 index 71755da..0000000 --- a/SOURCES/gnome-initial-setup-3.28.0-fix-japanese-defaults.patch +++ /dev/null @@ -1,91 +0,0 @@ -diff -urN gnome-initial-setup-3.28.0.old/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c gnome-initial-setup-3.28.0/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c ---- gnome-initial-setup-3.28.0.old/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c 2020-10-23 09:57:27.493000000 +0100 -+++ gnome-initial-setup-3.28.0/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c 2020-10-23 15:03:34.772000000 +0100 -@@ -37,6 +37,8 @@ - #include "keyboard-resources.h" - #include "cc-input-chooser.h" - -+#include "cc-common-language.h" -+ - #define GNOME_DESKTOP_INPUT_SOURCES_DIR "org.gnome.desktop.input-sources" - #define KEY_CURRENT_INPUT_SOURCE "current" - #define KEY_INPUT_SOURCES "sources" -@@ -281,8 +283,7 @@ - { - const gchar *type; - const gchar *id; -- const gchar * const *locales; -- const gchar *language; -+ gchar *language; - GVariantBuilder builder; - GSettings *input_settings; - -@@ -292,12 +293,12 @@ - add_default_keyboard_layout (proxy, &builder); - - /* add other input sources */ -- locales = g_get_language_names (); -- language = locales[0]; -+ language = cc_common_language_get_current_language (); - if (gnome_get_input_source_from_locale (language, &type, &id)) { - if (!g_str_equal (type, "xkb")) - g_variant_builder_add (&builder, "(ss)", type, id); - } -+ g_free (language); - - g_settings_delay (input_settings); - g_settings_set_value (input_settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder)); -@@ -346,8 +347,12 @@ - } - - static void --load_localed_input (GisKeyboardPage *self) -+preselect_input_source (GisKeyboardPage *self) - { -+ const gchar *type; -+ const gchar *id; -+ gchar *language; -+ - GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self); - GSList * sources = get_localed_input (priv->localed); - -@@ -356,11 +361,28 @@ - g_slist_free_full (priv->system_sources, g_free); - priv->system_sources = g_slist_reverse (sources); - -- /* We only pre-select the first system layout. */ -- if (priv->system_sources) -+ /* For languages that use an input method, we will add both -+ * system keyboard layout and the ibus input method. For -+ * languages that use keyboard layout only, we will add only -+ * system keyboard layout. Because the keyboard layout -+ * information from gnome-desktop is not as accurate as system -+ * keyboard layout, if gnome-desktop returns keyboard layout, -+ * we ignore it and use system keyboard layout instead. If -+ * gnome-desktop instead returns an ibus input method, we will -+ * add both system keyboard layout and the ibus input method. */ -+ language = cc_common_language_get_current_language (); -+ -+ if (!priv->system_sources || -+ (gnome_get_input_source_from_locale (language, &type, &id) && g_strcmp0 (type, "xkb") != 0)) { -+ cc_input_chooser_set_input (CC_INPUT_CHOOSER (priv->input_chooser), -+ id, type); -+ } else { - cc_input_chooser_set_input (CC_INPUT_CHOOSER (priv->input_chooser), - (const gchar *) priv->system_sources->data, - "xkb"); -+ } -+ -+ g_free (language); - } - - static void -@@ -395,7 +417,7 @@ - - priv->localed = proxy; - -- load_localed_input (self); -+ preselect_input_source (self); - update_page_complete (self); - } - diff --git a/SOURCES/gnome-initial-setup-3.28.0-fix-legacy-faces-missing-icon.patch b/SOURCES/gnome-initial-setup-3.28.0-fix-legacy-faces-missing-icon.patch deleted file mode 100644 index 485ad78..0000000 --- a/SOURCES/gnome-initial-setup-3.28.0-fix-legacy-faces-missing-icon.patch +++ /dev/null @@ -1,200 +0,0 @@ -From 55f148cb0e09009bc0bfc2e12b58fa3577bc900c Mon Sep 17 00:00:00 2001 -From: Ondrej Holy -Date: Mon, 9 Apr 2018 09:07:32 +0200 -Subject: [PATCH 1/3] account: Use GIO API for face images handling - -Users panel in gnome-control-center switched to GIO API for face images -handling. Let's do the similar changes here also as a preparation for -filtering out legacy face images. - -https://bugzilla.gnome.org/show_bug.cgi?id=795086 ---- - .../pages/account/um-photo-dialog.c | 45 ++++++++++--------- - 1 file changed, 23 insertions(+), 22 deletions(-) - -diff --git a/gnome-initial-setup/pages/account/um-photo-dialog.c b/gnome-initial-setup/pages/account/um-photo-dialog.c -index b63ed78..8b23974 100644 ---- a/gnome-initial-setup/pages/account/um-photo-dialog.c -+++ b/gnome-initial-setup/pages/account/um-photo-dialog.c -@@ -145,15 +145,12 @@ stock_icon_selected (GtkMenuItem *menuitem, - - static GtkWidget * - menu_item_for_filename (UmPhotoDialog *um, -- const char *filename) -+ GFile *file) - { - GtkWidget *image, *menuitem; -- GFile *file; - GIcon *icon; - -- file = g_file_new_for_path (filename); - icon = g_file_icon_new (file); -- g_object_unref (file); - image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_DIALOG); - g_object_unref (icon); - -@@ -161,8 +158,9 @@ menu_item_for_filename (UmPhotoDialog *um, - gtk_container_add (GTK_CONTAINER (menuitem), image); - gtk_widget_show_all (menuitem); - -- g_object_set_data_full (G_OBJECT (menuitem), "filename", -- g_strdup (filename), (GDestroyNotify) g_free); -+ g_object_set_data_full (G_OBJECT (menuitem), -+ "filename", g_file_get_path (file), -+ (GDestroyNotify) g_free); - g_signal_connect (G_OBJECT (menuitem), "activate", - G_CALLBACK (stock_icon_selected), um); - -@@ -176,8 +174,6 @@ setup_photo_popup (UmPhotoDialog *um) - guint x, y; - const gchar * const * dirs; - guint i; -- GDir *dir; -- const char *face; - gboolean none_item_shown; - gboolean added_faces; - -@@ -189,25 +185,32 @@ setup_photo_popup (UmPhotoDialog *um) - - dirs = g_get_system_data_dirs (); - for (i = 0; dirs[i] != NULL; i++) { -- char *path; -+ g_autoptr(GFileEnumerator) enumerator = NULL; -+ g_autoptr(GFile) dir = NULL; -+ g_autofree gchar *path = NULL; -+ gpointer infoptr; - - path = g_build_filename (dirs[i], "pixmaps", "faces", NULL); -- dir = g_dir_open (path, 0, NULL); -- if (dir == NULL) { -- g_free (path); -+ dir = g_file_new_for_path (path); -+ -+ enumerator = g_file_enumerate_children (dir, -+ G_FILE_ATTRIBUTE_STANDARD_NAME "," -+ G_FILE_ATTRIBUTE_STANDARD_TYPE "," -+ G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK "," -+ G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET, -+ G_FILE_QUERY_INFO_NONE, -+ NULL, NULL); -+ if (enumerator == NULL) - continue; -- } - -- while ((face = g_dir_read_name (dir)) != NULL) { -- char *filename; -+ while ((infoptr = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL) { -+ g_autoptr (GFileInfo) info = infoptr; -+ g_autoptr (GFile) face_file = NULL; - - added_faces = TRUE; - -- filename = g_build_filename (path, face, NULL); -- menuitem = menu_item_for_filename (um, filename); -- g_free (filename); -- if (menuitem == NULL) -- continue; -+ face_file = g_file_get_child (dir, g_file_info_get_name (info)); -+ menuitem = menu_item_for_filename (um, face_file); - - gtk_menu_attach (GTK_MENU (menu), GTK_WIDGET (menuitem), - x, x + 1, y, y + 1); -@@ -219,8 +222,6 @@ setup_photo_popup (UmPhotoDialog *um) - x = 0; - } - } -- g_dir_close (dir); -- g_free (path); - - if (added_faces) - break; --- -2.33.1 - - -From 0441acd191fb89b40d30484e2966ddd48a196f12 Mon Sep 17 00:00:00 2001 -From: Ondrej Holy -Date: Mon, 9 Apr 2018 09:10:45 +0200 -Subject: [PATCH 2/3] account: Do not show legacy face images - -Legacy face images should not be shown in avatar chooser, so let's filter -all symlinks to the legacy files out. - -https://bugzilla.gnome.org/show_bug.cgi?id=795086 ---- - gnome-initial-setup/pages/account/um-photo-dialog.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/gnome-initial-setup/pages/account/um-photo-dialog.c b/gnome-initial-setup/pages/account/um-photo-dialog.c -index 8b23974..0769209 100644 ---- a/gnome-initial-setup/pages/account/um-photo-dialog.c -+++ b/gnome-initial-setup/pages/account/um-photo-dialog.c -@@ -170,6 +170,8 @@ menu_item_for_filename (UmPhotoDialog *um, - static void - setup_photo_popup (UmPhotoDialog *um) - { -+ GFileType type; -+ const gchar *target; - GtkWidget *menu, *menuitem, *image; - guint x, y; - const gchar * const * dirs; -@@ -209,6 +211,14 @@ setup_photo_popup (UmPhotoDialog *um) - - added_faces = TRUE; - -+ type = g_file_info_get_file_type (info); -+ if (type != G_FILE_TYPE_REGULAR && type != G_FILE_TYPE_SYMBOLIC_LINK) -+ continue; -+ -+ target = g_file_info_get_symlink_target (info); -+ if (target != NULL && g_str_has_prefix (target , "legacy/")) -+ continue; -+ - face_file = g_file_get_child (dir, g_file_info_get_name (info)); - menuitem = menu_item_for_filename (um, face_file); - --- -2.33.1 - - -From 6a7fcaf82b3dc913313f328501ec085b5bfb5d0f Mon Sep 17 00:00:00 2001 -From: Ondrej Holy -Date: Mon, 9 Apr 2018 09:37:46 +0200 -Subject: [PATCH 3/3] account: Make face images bigger - -The new set of face images doesn't contain the same number of images, -so let's change parameters of avatar chooser in the same way as it was -done in gnome-control-center. - -Now we present 72x72 faces in a 4x4 grid. - -https://bugzilla.gnome.org/show_bug.cgi?id=795086 ---- - gnome-initial-setup/pages/account/um-photo-dialog.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/gnome-initial-setup/pages/account/um-photo-dialog.c b/gnome-initial-setup/pages/account/um-photo-dialog.c -index 0769209..ac89d30 100644 ---- a/gnome-initial-setup/pages/account/um-photo-dialog.c -+++ b/gnome-initial-setup/pages/account/um-photo-dialog.c -@@ -37,7 +37,8 @@ - #include "um-photo-dialog.h" - #include "um-utils.h" - --#define ROW_SPAN 6 -+#define ROW_SPAN 5 -+#define AVATAR_PIXEL_SIZE 72 - - struct _UmPhotoDialog { - GtkWidget *photo_popup; -@@ -152,6 +153,7 @@ menu_item_for_filename (UmPhotoDialog *um, - - icon = g_file_icon_new (file); - image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_DIALOG); -+ gtk_image_set_pixel_size (GTK_IMAGE (image), AVATAR_PIXEL_SIZE); - g_object_unref (icon); - - menuitem = gtk_menu_item_new (); --- -2.33.1 - diff --git a/SOURCES/honor-firstboot-disabled.patch b/SOURCES/honor-firstboot-disabled.patch deleted file mode 100644 index 958d1d9..0000000 --- a/SOURCES/honor-firstboot-disabled.patch +++ /dev/null @@ -1,88 +0,0 @@ -From b2659246f3e2afcbf51a92ee6839775de4e6487a Mon Sep 17 00:00:00 2001 -From: Rui Matos -Date: Mon, 23 Jan 2017 19:42:44 +0100 -Subject: [PATCH] Exit gracefully if we are disabled systemwide - -Sysadmins might want to disable any kind of initial setup for their -users, perhaps because they pre-configure their environments. We -should provide an easy way to do it. - -At least the anaconda installer provides an option to skip any kind -post-install setup tools so, for now we're only adding support for -that but more might be added in the future. - -https://bugzilla.gnome.org/show_bug.cgi?id=777707 ---- - gnome-initial-setup/Makefile.am | 3 ++- - gnome-initial-setup/gnome-initial-setup.c | 34 +++++++++++++++++++++++++++++++ - 2 files changed, 36 insertions(+), 1 deletion(-) - -diff --git a/gnome-initial-setup/Makefile.am b/gnome-initial-setup/Makefile.am -index d275dda..465b598 100644 ---- a/gnome-initial-setup/Makefile.am -+++ b/gnome-initial-setup/Makefile.am -@@ -11,7 +11,8 @@ AM_CPPFLAGS = \ - -DUIDIR="\"$(uidir)\"" \ - -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ - -DLIBLOCALEDIR=\""$(prefix)/lib/locale"\" \ -- -DDATADIR=\""$(datadir)"\" -+ -DDATADIR=\""$(datadir)"\" \ -+ -DSYSCONFDIR=\""$(sysconfdir)"\" - - libexec_PROGRAMS = gnome-initial-setup gnome-initial-setup-copy-worker - -diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c -index 2ec91b9..10b5f84 100644 ---- a/gnome-initial-setup/gnome-initial-setup.c -+++ b/gnome-initial-setup/gnome-initial-setup.c -@@ -186,6 +186,31 @@ get_mode (void) - return GIS_DRIVER_MODE_NEW_USER; - } - -+static gboolean -+initial_setup_disabled_by_anaconda (void) -+{ -+ GKeyFile *key_file; -+ const gchar *file_name = SYSCONFDIR "/sysconfig/anaconda"; -+ gboolean disabled = FALSE; -+ GError *error = NULL; -+ -+ key_file = g_key_file_new (); -+ if (!g_key_file_load_from_file (key_file, file_name, G_KEY_FILE_NONE, &error)) { -+ if (!g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT) && -+ !g_error_matches (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND)) { -+ g_warning ("Could not read %s: %s", file_name, error->message); -+ } -+ g_error_free (error); -+ goto out; -+ } -+ -+ disabled = g_key_file_get_boolean (key_file, "General", -+ "post_install_tools_disabled", NULL); -+ out: -+ g_key_file_unref (key_file); -+ return disabled; -+} -+ - int - main (int argc, char *argv[]) - { -@@ -226,6 +251,15 @@ main (int argc, char *argv[]) - - mode = get_mode (); - -+ /* We only do this in existing-user mode, because if gdm launches us -+ * in new-user mode and we just exit, gdm's special g-i-s session -+ * never terminates. */ -+ if (initial_setup_disabled_by_anaconda () && -+ mode == GIS_DRIVER_MODE_EXISTING_USER) { -+ gis_ensure_stamp_files (); -+ exit (EXIT_SUCCESS); -+ } -+ - /* When we are running as the gnome-initial-setup user we - * dont have a normal user session and need to initialize - * the keyring manually so that we can pass the credentials --- -2.9.3 - diff --git a/SOURCES/quacks-like-fedora.patch b/SOURCES/quacks-like-fedora.patch deleted file mode 100644 index 2d88d8e..0000000 --- a/SOURCES/quacks-like-fedora.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up gnome-initial-setup-3.28.0/gnome-initial-setup/pages/language/gis-language-page.c.quacks_like_fedora gnome-initial-setup-3.28.0/gnome-initial-setup/pages/language/gis-language-page.c ---- gnome-initial-setup-3.28.0/gnome-initial-setup/pages/language/gis-language-page.c.quacks_like_fedora 2019-02-18 11:06:22.404874101 -0500 -+++ gnome-initial-setup-3.28.0/gnome-initial-setup/pages/language/gis-language-page.c 2019-02-18 13:29:59.069513421 -0500 -@@ -227,11 +227,18 @@ update_distro_logo (GisLanguagePage *pag - - if (g_file_get_contents ("/etc/os-release", &buffer, NULL, NULL)) - { -- id = get_item (buffer, "ID"); -+ id = get_item (buffer, "ID_LIKE"); -+ -+ if (id == NULL) -+ id = get_item (buffer, "ID"); -+ - g_free (buffer); - } - -- if (g_strcmp0 (id, "fedora") == 0) -+ if (id != NULL && -+ (strcmp (id, "fedora") == 0 || -+ strstr (id, " fedora") != NULL || -+ strstr (id, "fedora ") != NULL)) - { - g_object_set (priv->logo, "icon-name", "fedora-logo-icon", NULL); - } diff --git a/SOURCES/reduce-initial-setup-redundancy.patch b/SOURCES/reduce-initial-setup-redundancy.patch deleted file mode 100644 index a34470b..0000000 --- a/SOURCES/reduce-initial-setup-redundancy.patch +++ /dev/null @@ -1,974 +0,0 @@ -From de07cbc69b8f64b1a7708f454f029814d3c48b10 Mon Sep 17 00:00:00 2001 -From: Michael Catanzaro -Date: Thu, 15 Feb 2018 21:08:38 -0600 -Subject: [PATCH] Reduce initial setup redundancy - -This contains patches from these bugs: - -https://bugzilla.gnome.org/show_bug.cgi?id=793501 -https://bugzilla.gnome.org/show_bug.cgi?id=794166 - -modified a bit to not conflict with each other. - -This is a combination of work by Peng Wu and Michael Catanzaro. ---- - gnome-initial-setup/gis-assistant.c | 3 +- - gnome-initial-setup/gis-page.c | 8 + - gnome-initial-setup/gis-page.h | 2 + - gnome-initial-setup/gnome-initial-setup.c | 77 +++++++-- - .../pages/account/gis-account-page.h | 2 - - .../pages/account/gis-account-pages.c | 9 +- - .../pages/account/gis-account-pages.h | 2 +- - gnome-initial-setup/pages/eulas/gis-eula-pages.c | 16 +- - gnome-initial-setup/pages/eulas/gis-eula-pages.h | 2 +- - gnome-initial-setup/pages/goa/gis-goa-page.c | 9 +- - gnome-initial-setup/pages/goa/gis-goa-page.h | 2 +- - .../pages/keyboard/gis-keyboard-page.c | 185 ++++++++++++++++----- - .../pages/keyboard/gis-keyboard-page.h | 2 +- - .../pages/language/gis-language-page.c | 24 ++- - .../pages/language/gis-language-page.h | 3 +- - .../pages/language/gis-language-page.ui | 4 +- - .../pages/network/gis-network-page.c | 9 +- - .../pages/network/gis-network-page.h | 2 +- - .../pages/password/gis-password-page.c | 9 +- - .../pages/password/gis-password-page.h | 2 +- - .../pages/privacy/gis-privacy-page.c | 9 +- - .../pages/privacy/gis-privacy-page.h | 2 +- - gnome-initial-setup/pages/region/gis-region-page.c | 9 +- - gnome-initial-setup/pages/region/gis-region-page.h | 2 +- - .../pages/software/gis-software-page.c | 14 +- - .../pages/software/gis-software-page.h | 2 +- - .../pages/summary/gis-summary-page.c | 9 +- - .../pages/summary/gis-summary-page.h | 2 +- - .../pages/timezone/gis-timezone-page.c | 9 +- - .../pages/timezone/gis-timezone-page.h | 2 +- - 30 files changed, 296 insertions(+), 136 deletions(-) - -diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c -index 37ed563..0a3bd05 100644 ---- a/gnome-initial-setup/gis-assistant.c -+++ b/gnome-initial-setup/gis-assistant.c -@@ -302,7 +302,8 @@ gis_assistant_add_page (GisAssistant *assistant, - - gtk_container_add (GTK_CONTAINER (priv->stack), GTK_WIDGET (page)); - -- if (priv->current_page->assistant_priv->link == link->prev) -+ if (priv->current_page && -+ priv->current_page->assistant_priv->link == link->prev) - update_navigation_buttons (assistant); - } - -diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c -index e28f573..8564935 100644 ---- a/gnome-initial-setup/gis-page.c -+++ b/gnome-initial-setup/gis-page.c -@@ -382,3 +382,11 @@ gis_page_shown (GisPage *page) - if (GIS_PAGE_GET_CLASS (page)->shown) - GIS_PAGE_GET_CLASS (page)->shown (page); - } -+ -+gboolean -+gis_page_skip (GisPage *page) -+{ -+ if (GIS_PAGE_GET_CLASS (page)->skip) -+ return GIS_PAGE_GET_CLASS (page)->skip (page); -+ return TRUE; -+} -diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h -index 02e3085..1f11578 100644 ---- a/gnome-initial-setup/gis-page.h -+++ b/gnome-initial-setup/gis-page.h -@@ -60,6 +60,7 @@ struct _GisPageClass - GCancellable *cancellable); - void (*save_data) (GisPage *page); - void (*shown) (GisPage *page); -+ gboolean (*skip) (GisPage *page); - }; - - GType gis_page_get_type (void); -@@ -80,6 +81,7 @@ void gis_page_apply_complete (GisPage *page, gboolean valid); - gboolean gis_page_get_applying (GisPage *page); - void gis_page_save_data (GisPage *page); - void gis_page_shown (GisPage *page); -+gboolean gis_page_skip (GisPage *page); - - G_END_DECLS - -diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c -index 5a988a3..4558810 100644 ---- a/gnome-initial-setup/gnome-initial-setup.c -+++ b/gnome-initial-setup/gnome-initial-setup.c -@@ -50,11 +50,15 @@ - #include "pages/summary/gis-summary-page.h" - - #define VENDOR_PAGES_GROUP "pages" --#define VENDOR_PAGES_SKIP_KEY "skip" -+#define VENDOR_SKIP_KEY "skip" -+#define VENDOR_NEW_USER_ONLY_KEY "new_user_only" -+#define VENDOR_EXISTING_USER_ONLY_KEY "existing_user_only" - - static gboolean force_existing_user_mode; - --typedef void (*PreparePage) (GisDriver *driver); -+static GPtrArray *skipped_pages; -+ -+typedef GisPage *(*PreparePage) (GisDriver *driver); - - typedef struct { - const gchar *page_id; -@@ -101,21 +105,40 @@ should_skip_page (GisDriver *driver, - } - - static gchar ** --pages_to_skip_from_file (void) -+strv_append (gchar **a, -+ gchar **b) -+{ -+ guint n = g_strv_length (a); -+ guint m = g_strv_length (b); -+ -+ a = g_renew (gchar *, a, n + m + 1); -+ for (guint i = 0; i < m; i++) -+ a[n + i] = g_strdup (b[i]); -+ a[n + m] = NULL; -+ -+ return a; -+} -+ -+static gchar ** -+pages_to_skip_from_file (gboolean is_new_user) - { - GKeyFile *skip_pages_file; - gchar **skip_pages = NULL; -+ gchar **additional_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: -- * - skip (optional): list of pages to be skipped. -+ * - skip (optional): list of pages to be skipped always -+ * - new_user_only (optional): list of pages to be skipped in existing user mode -+ * - existing_user_only (optional): list of pages to be skipped in new user mode - * -- * This is how this file would look on a vendor image: -+ * This is how this file might look on a vendor image: - * - * [pages] -- * skip=language -+ * skip=timezone -+ * existing_user_only=language;keyboard - */ - skip_pages_file = g_key_file_new (); - if (!g_key_file_load_from_file (skip_pages_file, VENDOR_CONF_FILE, -@@ -127,8 +150,20 @@ 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, -+ VENDOR_PAGES_GROUP, -+ VENDOR_SKIP_KEY, NULL, NULL); -+ additional_skip_pages = g_key_file_get_string_list (skip_pages_file, -+ VENDOR_PAGES_GROUP, -+ is_new_user ? VENDOR_EXISTING_USER_ONLY_KEY : VENDOR_NEW_USER_ONLY_KEY, -+ NULL, NULL); -+ -+ if (!skip_pages && additional_skip_pages) { -+ skip_pages = additional_skip_pages; -+ } else if (skip_pages && additional_skip_pages) { -+ skip_pages = strv_append (skip_pages, additional_skip_pages); -+ g_strfreev (additional_skip_pages); -+ } - - out: - g_key_file_free (skip_pages_file); -@@ -159,16 +194,14 @@ static void - rebuild_pages_cb (GisDriver *driver) - { - PageData *page_data; -+ GisPage *page; - GisAssistant *assistant; - GisPage *current_page; - gchar **skip_pages; -- gboolean is_new_user; -+ gboolean is_new_user, skipped; - - 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,14 +215,23 @@ 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; -+ skipped = FALSE; -+ -+ if ((page_data->new_user_only && !is_new_user) || -+ (should_skip_page (driver, page_data->page_id, skip_pages))) -+ skipped = TRUE; - -- if (should_skip_page (driver, page_data->page_id, skip_pages)) -+ page = page_data->prepare_page_func (driver); -+ if (!page) - continue; - -- page_data->prepare_page_func (driver); -+ if (skipped && gis_page_skip (page)) -+ g_ptr_array_add (skipped_pages, page); -+ else -+ gis_driver_add_page (driver, page); - } - - g_strfreev (skip_pages); -@@ -267,6 +309,7 @@ main (int argc, char *argv[]) - } - #endif - -+ skipped_pages = g_ptr_array_new_with_free_func ((GDestroyNotify)gtk_widget_destroy); - mode = get_mode (); - - /* We only do this in existing-user mode, because if gdm launches us -@@ -290,6 +333,8 @@ main (int argc, char *argv[]) - g_signal_connect (driver, "rebuild-pages", G_CALLBACK (rebuild_pages_cb), NULL); - status = g_application_run (G_APPLICATION (driver), argc, argv); - -+ g_ptr_array_free (skipped_pages, TRUE); -+ - g_object_unref (driver); - g_option_context_free (context); - return status; -diff --git a/gnome-initial-setup/pages/account/gis-account-page.h b/gnome-initial-setup/pages/account/gis-account-page.h -index cc34304..7629e1a 100644 ---- a/gnome-initial-setup/pages/account/gis-account-page.h -+++ b/gnome-initial-setup/pages/account/gis-account-page.h -@@ -50,8 +50,6 @@ struct _GisAccountPageClass - - GType gis_account_page_get_type (void); - --void gis_prepare_account_page (GisDriver *driver); -- - G_END_DECLS - - #endif /* __GIS_ACCOUNT_PAGE_H__ */ -diff --git a/gnome-initial-setup/pages/account/gis-account-pages.c b/gnome-initial-setup/pages/account/gis-account-pages.c -index 5f4411b..d9cc8d9 100644 ---- a/gnome-initial-setup/pages/account/gis-account-pages.c -+++ b/gnome-initial-setup/pages/account/gis-account-pages.c -@@ -23,11 +23,10 @@ - #include "gis-account-pages.h" - #include "gis-account-page.h" - --void -+GisPage * - gis_prepare_account_page (GisDriver *driver) - { -- gis_driver_add_page (driver, -- g_object_new (GIS_TYPE_ACCOUNT_PAGE, -- "driver", driver, -- NULL)); -+ return g_object_new (GIS_TYPE_ACCOUNT_PAGE, -+ "driver", driver, -+ NULL); - } -diff --git a/gnome-initial-setup/pages/account/gis-account-pages.h b/gnome-initial-setup/pages/account/gis-account-pages.h -index 20d615a..394421b 100644 ---- a/gnome-initial-setup/pages/account/gis-account-pages.h -+++ b/gnome-initial-setup/pages/account/gis-account-pages.h -@@ -28,7 +28,7 @@ - - G_BEGIN_DECLS - --void gis_prepare_account_page (GisDriver *driver); -+GisPage *gis_prepare_account_page (GisDriver *driver); - - G_END_DECLS - -diff --git a/gnome-initial-setup/pages/eulas/gis-eula-pages.c b/gnome-initial-setup/pages/eulas/gis-eula-pages.c -index 8c989c2..3de6653 100644 ---- a/gnome-initial-setup/pages/eulas/gis-eula-pages.c -+++ b/gnome-initial-setup/pages/eulas/gis-eula-pages.c -@@ -25,7 +25,7 @@ - #include "gis-eula-pages.h" - #include "gis-eula-page.h" - --void -+GisPage * - gis_prepare_eula_page (GisDriver *driver) - { - gchar *eulas_dir_path; -@@ -33,6 +33,7 @@ gis_prepare_eula_page (GisDriver *driver) - GError *error = NULL; - GFileEnumerator *enumerator = NULL; - GFileInfo *info; -+ GisPage *page = NULL; - - eulas_dir_path = g_build_filename (PKGDATADIR, "eulas", NULL); - eulas_dir = g_file_new_for_path (eulas_dir_path); -@@ -52,11 +53,12 @@ gis_prepare_eula_page (GisDriver *driver) - - while ((info = g_file_enumerator_next_file (enumerator, NULL, &error)) != NULL) { - GFile *eula = g_file_enumerator_get_child (enumerator, info); -- gis_driver_add_page (driver, -- g_object_new (GIS_TYPE_EULA_PAGE, -- "driver", driver, -- "eula", eula, -- NULL)); -+ -+ page = g_object_new (GIS_TYPE_EULA_PAGE, -+ "driver", driver, -+ "eula", eula, -+ NULL); -+ - g_object_unref (eula); - } - -@@ -71,4 +73,6 @@ gis_prepare_eula_page (GisDriver *driver) - - g_object_unref (eulas_dir); - g_clear_object (&enumerator); -+ -+ return page; - } -diff --git a/gnome-initial-setup/pages/eulas/gis-eula-pages.h b/gnome-initial-setup/pages/eulas/gis-eula-pages.h -index 9424a6d..54906bc 100644 ---- a/gnome-initial-setup/pages/eulas/gis-eula-pages.h -+++ b/gnome-initial-setup/pages/eulas/gis-eula-pages.h -@@ -28,7 +28,7 @@ - - G_BEGIN_DECLS - --void gis_prepare_eula_page (GisDriver *driver); -+GisPage *gis_prepare_eula_page (GisDriver *driver); - - G_END_DECLS - -diff --git a/gnome-initial-setup/pages/goa/gis-goa-page.c b/gnome-initial-setup/pages/goa/gis-goa-page.c -index fcdcabe..3ed4e98 100644 ---- a/gnome-initial-setup/pages/goa/gis-goa-page.c -+++ b/gnome-initial-setup/pages/goa/gis-goa-page.c -@@ -363,11 +363,10 @@ gis_goa_page_init (GisGoaPage *page) - gtk_widget_init_template (GTK_WIDGET (page)); - } - --void -+GisPage * - gis_prepare_goa_page (GisDriver *driver) - { -- gis_driver_add_page (driver, -- g_object_new (GIS_TYPE_GOA_PAGE, -- "driver", driver, -- NULL)); -+ return g_object_new (GIS_TYPE_GOA_PAGE, -+ "driver", driver, -+ NULL); - } -diff --git a/gnome-initial-setup/pages/goa/gis-goa-page.h b/gnome-initial-setup/pages/goa/gis-goa-page.h -index e65aa28..31918bf 100644 ---- a/gnome-initial-setup/pages/goa/gis-goa-page.h -+++ b/gnome-initial-setup/pages/goa/gis-goa-page.h -@@ -48,7 +48,7 @@ struct _GisGoaPageClass - - GType gis_goa_page_get_type (void); - --void gis_prepare_goa_page (GisDriver *driver); -+GisPage *gis_prepare_goa_page (GisDriver *driver); - - G_END_DECLS - -diff --git a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c -index 91d9a25..445da30 100644 ---- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c -+++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c -@@ -30,6 +30,9 @@ - #include - #include - -+#define GNOME_DESKTOP_USE_UNSTABLE_API -+#include -+ - #include "gis-keyboard-page.h" - #include "keyboard-resources.h" - #include "cc-input-chooser.h" -@@ -208,53 +211,145 @@ gis_keyboard_page_apply (GisPage *page, - return FALSE; - } - -+static GSList * -+get_localed_input (GDBusProxy *proxy) -+{ -+ GVariant *v; -+ const gchar *s; -+ gchar *id; -+ guint i, n; -+ gchar **layouts = NULL; -+ gchar **variants = NULL; -+ GSList *sources = NULL; -+ -+ if (!proxy) -+ return NULL; -+ -+ v = g_dbus_proxy_get_cached_property (proxy, "X11Layout"); -+ if (v) { -+ s = g_variant_get_string (v, NULL); -+ layouts = g_strsplit (s, ",", -1); -+ g_variant_unref (v); -+ } -+ -+ v = g_dbus_proxy_get_cached_property (proxy, "X11Variant"); -+ if (v) { -+ s = g_variant_get_string (v, NULL); -+ if (s && *s) -+ variants = g_strsplit (s, ",", -1); -+ g_variant_unref (v); -+ } -+ -+ if (variants && variants[0]) -+ n = MIN (g_strv_length (layouts), g_strv_length (variants)); -+ else if (layouts && layouts[0]) -+ n = g_strv_length (layouts); -+ else -+ n = 0; -+ -+ for (i = 0; i < n && layouts[i][0]; i++) { -+ if (variants && variants[i] && variants[i][0]) -+ id = g_strdup_printf ("%s+%s", layouts[i], variants[i]); -+ else -+ id = g_strdup (layouts[i]); -+ sources = g_slist_prepend (sources, id); -+ } -+ -+ g_strfreev (variants); -+ g_strfreev (layouts); -+ -+ return sources; -+} -+ - static void --load_localed_input (GisKeyboardPage *self) -+add_default_keyboard_layout (GDBusProxy *proxy, -+ GVariantBuilder *builder) - { -- GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self); -- GVariant *v; -- const gchar *s; -- gchar *id; -- guint i, n; -- gchar **layouts = NULL; -- gchar **variants = NULL; -- GSList *sources = NULL; -+ GSList *sources = get_localed_input (proxy); -+ sources = g_slist_reverse (sources); - -- if (!priv->localed) -- return; -+ for (; sources; sources = sources->next) -+ g_variant_builder_add (builder, "(ss)", "xkb", -+ (const gchar *) sources->data); - -- v = g_dbus_proxy_get_cached_property (priv->localed, "X11Layout"); -- if (v) { -- s = g_variant_get_string (v, NULL); -- layouts = g_strsplit (s, ",", -1); -- g_variant_unref (v); -- } -+ g_slist_free_full (sources, g_free); -+} - -- v = g_dbus_proxy_get_cached_property (priv->localed, "X11Variant"); -- if (v) { -- s = g_variant_get_string (v, NULL); -- if (s && *s) -- variants = g_strsplit (s, ",", -1); -- g_variant_unref (v); -- } -+static void -+add_default_input_sources (GisKeyboardPage *self, -+ GDBusProxy *proxy) -+{ -+ const gchar *type; -+ const gchar *id; -+ const gchar * const *locales; -+ const gchar *language; -+ GVariantBuilder builder; -+ GSettings *input_settings; -+ -+ input_settings = g_settings_new (GNOME_DESKTOP_INPUT_SOURCES_DIR); -+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)")); -+ -+ add_default_keyboard_layout (proxy, &builder); -+ -+ /* add other input sources */ -+ locales = g_get_language_names (); -+ language = locales[0]; -+ if (gnome_get_input_source_from_locale (language, &type, &id)) { -+ if (!g_str_equal (type, "xkb")) -+ g_variant_builder_add (&builder, "(ss)", type, id); -+ } -+ -+ g_settings_delay (input_settings); -+ g_settings_set_value (input_settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder)); -+ g_settings_set_uint (input_settings, KEY_CURRENT_INPUT_SOURCE, 0); -+ g_settings_apply (input_settings); -+ -+ g_object_unref (input_settings); -+} - -- if (variants && variants[0]) -- n = MIN (g_strv_length (layouts), g_strv_length (variants)); -- else if (layouts && layouts[0]) -- n = g_strv_length (layouts); -- else -- n = 0; -- -- for (i = 0; i < n && layouts[i][0]; i++) { -- if (variants && variants[i] && variants[i][0]) -- id = g_strdup_printf ("%s+%s", layouts[i], variants[i]); -- else -- id = g_strdup (layouts[i]); -- sources = g_slist_prepend (sources, id); -- } -+static void -+skip_proxy_ready (GObject *source, -+ GAsyncResult *res, -+ gpointer data) -+{ -+ GisKeyboardPage *self = data; -+ GDBusProxy *proxy; -+ GError *error = NULL; -+ -+ proxy = g_dbus_proxy_new_finish (res, &error); -+ -+ if (!proxy) { -+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) -+ g_warning ("Failed to contact localed: %s", error->message); -+ g_error_free (error); -+ return; -+ } -+ -+ add_default_input_sources (self, proxy); -+ -+ g_object_unref (proxy); -+} - -- g_strfreev (variants); -- g_strfreev (layouts); -+static gboolean -+gis_keyboard_page_skip (GisPage *self) -+{ -+ g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, -+ G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES, -+ NULL, -+ "org.freedesktop.locale1", -+ "/org/freedesktop/locale1", -+ "org.freedesktop.locale1", -+ NULL, -+ (GAsyncReadyCallback) skip_proxy_ready, -+ self); -+ return TRUE; -+} -+ -+static void -+load_localed_input (GisKeyboardPage *self) -+{ -+ GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self); -+ GSList * sources = get_localed_input (priv->localed); - - /* These will be added silently after the user selection when - * writing out the settings. */ -@@ -375,6 +470,7 @@ gis_keyboard_page_class_init (GisKeyboardPageClass * klass) - - page_class->page_id = PAGE_ID; - page_class->apply = gis_keyboard_page_apply; -+ page_class->skip = gis_keyboard_page_skip; - page_class->locale_changed = gis_keyboard_page_locale_changed; - object_class->constructed = gis_keyboard_page_constructed; - object_class->finalize = gis_keyboard_page_finalize; -@@ -389,11 +485,10 @@ gis_keyboard_page_init (GisKeyboardPage *self) - gtk_widget_init_template (GTK_WIDGET (self)); - } - --void -+GisPage * - gis_prepare_keyboard_page (GisDriver *driver) - { -- gis_driver_add_page (driver, -- g_object_new (GIS_TYPE_KEYBOARD_PAGE, -- "driver", driver, -- NULL)); -+ return g_object_new (GIS_TYPE_KEYBOARD_PAGE, -+ "driver", driver, -+ NULL); - } -diff --git a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h -index 832473f..d5710a0 100644 ---- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h -+++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h -@@ -63,7 +63,7 @@ struct _GisKeyboardPageClass - - GType gis_keyboard_page_get_type (void) G_GNUC_CONST; - --void gis_prepare_keyboard_page (GisDriver *driver); -+GisPage *gis_prepare_keyboard_page (GisDriver *driver); - - G_END_DECLS - -diff --git a/gnome-initial-setup/pages/language/gis-language-page.c b/gnome-initial-setup/pages/language/gis-language-page.c -index 6e246f9..c5f895c 100644 ---- a/gnome-initial-setup/pages/language/gis-language-page.c -+++ b/gnome-initial-setup/pages/language/gis-language-page.c -@@ -267,6 +267,8 @@ gis_language_page_constructed (GObject *object) - - update_distro_logo (page); - -+ 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", -@@ -288,7 +290,7 @@ gis_language_page_constructed (GObject *object) - (GAsyncReadyCallback) localed_proxy_ready, - object); - g_object_unref (bus); -- } -+ } - - gis_page_set_complete (GIS_PAGE (page), TRUE); - gtk_widget_show (GTK_WIDGET (page)); -@@ -300,6 +302,16 @@ gis_language_page_locale_changed (GisPage *page) - gis_page_set_title (GIS_PAGE (page), _("Welcome")); - } - -+static gboolean -+gis_language_page_skip (GisPage *page) -+{ -+ GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (GIS_LANGUAGE_PAGE (page)); -+ -+ gtk_widget_hide (priv->language_chooser); -+ -+ return FALSE; -+} -+ - static void - gis_language_page_dispose (GObject *object) - { -@@ -327,6 +339,7 @@ gis_language_page_class_init (GisLanguagePageClass *klass) - - page_class->page_id = PAGE_ID; - page_class->locale_changed = gis_language_page_locale_changed; -+ page_class->skip = gis_language_page_skip; - object_class->constructed = gis_language_page_constructed; - object_class->dispose = gis_language_page_dispose; - } -@@ -341,11 +354,10 @@ gis_language_page_init (GisLanguagePage *page) - gtk_widget_init_template (GTK_WIDGET (page)); - } - --void -+GisPage * - gis_prepare_language_page (GisDriver *driver) - { -- gis_driver_add_page (driver, -- g_object_new (GIS_TYPE_LANGUAGE_PAGE, -- "driver", driver, -- NULL)); -+ return g_object_new (GIS_TYPE_LANGUAGE_PAGE, -+ "driver", driver, -+ 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..a5b78ff 100644 ---- a/gnome-initial-setup/pages/language/gis-language-page.h -+++ b/gnome-initial-setup/pages/language/gis-language-page.h -@@ -50,7 +50,8 @@ struct _GisLanguagePageClass - - GType gis_language_page_get_type (void); - --void gis_prepare_language_page (GisDriver *driver); -+GisPage *gis_prepare_language_page (GisDriver *driver); -+GisPage *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..d5e962a 100644 ---- a/gnome-initial-setup/pages/language/gis-language-page.ui -+++ b/gnome-initial-setup/pages/language/gis-language-page.ui -@@ -7,7 +7,7 @@ - True - vertical - center -- fill -+ center - -