File gnome-settings-daemon-initial-keyboard.patch of Package gnome-settings-daemon.16848

From c2e0c03c03f47da9b117db0ba876732e84dcf0c4 Mon Sep 17 00:00:00 2001
From: Federico Mena Quintero <federico@gnome.org>
Date: Mon, 16 May 2016 19:18:43 -0500
Subject: [PATCH] Resurrect the code from upstream to set the default keyboard
 from XKB if there is one.

Suse works differently than GNOME here; we set a default keyboard from
the system's configuration instead of letting GNOME take care of
everything itself.

https://bugzilla.suse.com/show_bug.cgi?id=979051
---
 plugins/keyboard/gsd-keyboard-manager.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff -urp gnome-settings-daemon-3.33.90.orig/plugins/keyboard/gsd-keyboard-manager.c gnome-settings-daemon-3.33.90/plugins/keyboard/gsd-keyboard-manager.c
--- gnome-settings-daemon-3.33.90.orig/plugins/keyboard/gsd-keyboard-manager.c	2019-08-05 18:40:19.000000000 -0500
+++ gnome-settings-daemon-3.33.90/plugins/keyboard/gsd-keyboard-manager.c	2019-08-31 06:29:26.930806593 -0500
@@ -331,7 +331,7 @@ update_gtk_im_module (GsdKeyboardManager
 }
 
 static void
-get_sources_from_xkb_config (GsdKeyboardManager *manager)
+get_sources_from_xkb_config (GsdKeyboardManager *manager, gboolean running_under_gdm)
 {
         GVariantBuilder builder;
         GVariant *v;
@@ -349,7 +349,7 @@ get_sources_from_xkb_config (GsdKeyboard
 
         init_builder_with_sources (&builder, manager->input_sources_settings);
 
-        if (!layouts) {
+        if (!layouts && running_under_gdm) {
                 g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_XKB, DEFAULT_LAYOUT);
                 goto out;
 	}
@@ -528,15 +528,23 @@ maybe_create_initial_settings (GsdKeyboa
 
         settings = manager->input_sources_settings;
 
-        if (g_getenv ("RUNNING_UNDER_GDM"))
-                return;
+        if (g_getenv ("RUNNING_UNDER_GDM")) {
+                GVariantBuilder builder;
+                /* clean the settings and get them from the "system" */
+                g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)"));
+                g_settings_set_value (settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
+                get_sources_from_xkb_config (manager, TRUE);
+
+                g_settings_set_strv (settings, KEY_KEYBOARD_OPTIONS, NULL);
+                get_options_from_xkb_config (manager);
+        }
 
         maybe_convert_old_settings (settings);
 
         /* if we still don't have anything do some educated guesses */
         sources = g_settings_get_value (settings, KEY_INPUT_SOURCES);
         if (g_variant_n_children (sources) < 1)
-                get_sources_from_xkb_config (manager);
+                get_sources_from_xkb_config (manager, FALSE);
         g_variant_unref (sources);
 
         options = g_settings_get_strv (settings, KEY_KEYBOARD_OPTIONS);
openSUSE Build Service is sponsored by