File gsettings-do-not-store-autodetected-keyboard-settings.patch of Package gnome-settings-daemon.1498
Index: gnome-settings-daemon-3.10.2/plugins/keyboard/gsd-keyboard-manager.c
===================================================================
--- gnome-settings-daemon-3.10.2.orig/plugins/keyboard/gsd-keyboard-manager.c
+++ gnome-settings-daemon-3.10.2/plugins/keyboard/gsd-keyboard-manager.c
@@ -1288,14 +1288,18 @@ get_sources_from_xkb_config (GsdKeyboard
if (!have_default_layout && running_under_gdm)
g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_XKB, DEFAULT_LAYOUT);
- g_settings_set_value (priv->input_sources_settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
+ if (running_under_gdm){
+ // only set dconf in gdm, do NOT set doncf for normal sessions as it would prevent
+ // system-wide configuration taking effect, see bnc#931527
+ g_settings_set_value (priv->input_sources_settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
+ }
g_strfreev (layouts);
g_strfreev (variants);
}
static void
-get_options_from_xkb_config (GsdKeyboardManager *manager)
+get_options_from_xkb_config (GsdKeyboardManager *manager, gboolean running_under_gdm)
{
GsdKeyboardManagerPrivate *priv = manager->priv;
GVariant *v;
@@ -1312,7 +1316,10 @@ get_options_from_xkb_config (GsdKeyboard
if (!options)
return;
- g_settings_set_strv (priv->input_sources_settings, KEY_KEYBOARD_OPTIONS, (const gchar * const*) options);
+ if (running_under_gdm) {
+ // only set dconf in gdm, see bnc#931527
+ g_settings_set_strv (priv->input_sources_settings, KEY_KEYBOARD_OPTIONS, (const gchar * const*) options);
+ }
g_strfreev (options);
}
@@ -1448,7 +1455,7 @@ maybe_create_initial_settings (GsdKeyboa
get_sources_from_xkb_config (manager, TRUE);
g_settings_set_strv (settings, KEY_KEYBOARD_OPTIONS, NULL);
- get_options_from_xkb_config (manager);
+ get_options_from_xkb_config (manager, TRUE);
return;
}
@@ -1462,7 +1469,7 @@ maybe_create_initial_settings (GsdKeyboa
options = g_settings_get_strv (settings, KEY_KEYBOARD_OPTIONS);
if (g_strv_length (options) < 1)
- get_options_from_xkb_config (manager);
+ get_options_from_xkb_config (manager, FALSE);
g_strfreev (options);
}