File gnome-settings-daemon-initial-keyboard.patch of Package gnome-settings-daemon.11222
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(-)
Index: gnome-settings-daemon-3.26.0/plugins/keyboard/gsd-keyboard-manager.c
===================================================================
--- gnome-settings-daemon-3.26.0.orig/plugins/keyboard/gsd-keyboard-manager.c 2017-09-14 13:42:53.415421010 +0200
+++ gnome-settings-daemon-3.26.0/plugins/keyboard/gsd-keyboard-manager.c 2017-09-14 13:42:58.455409895 +0200
@@ -433,7 +433,7 @@
}
static void
-get_sources_from_xkb_config (GsdKeyboardManager *manager)
+get_sources_from_xkb_config (GsdKeyboardManager *manager, gboolean running_under_gdm)
{
GsdKeyboardManagerPrivate *priv = manager->priv;
GVariantBuilder builder;
@@ -452,7 +452,7 @@
init_builder_with_sources (&builder, priv->input_sources_settings);
- if (!layouts) {
+ if (!layouts && running_under_gdm) {
g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_XKB, DEFAULT_LAYOUT);
goto out;
}
@@ -632,15 +632,23 @@
settings = manager->priv->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);