Index: BUILD/plasma-desktop-5.15.4/kcms/keyboard/keyboard_config.cpp =================================================================== --- BUILD/plasma-desktop-5.15.4/kcms/keyboard/keyboard_config.cpp +++ BUILD/plasma-desktop-5.15.4/kcms/keyboard/keyboard_config.cpp @@ -107,12 +107,17 @@ // layoutStrings.append(DEFAULT_LAYOUT); // } layouts.clear(); - foreach(const QString& layoutString, layoutStrings) { - layouts.append(LayoutUnit(layoutString)); - } - if( layouts.isEmpty() ) { - configureLayouts = false; + if (layoutStrings.isEmpty()) { + QList x11layouts = X11Helper::getLayoutsList(); + foreach(LayoutUnit layoutUnit, x11layouts) { + layouts.append(layoutUnit); + } + } else { + foreach(const QString& layoutString, layoutStrings) { + layouts.append(LayoutUnit(layoutString)); + } } + configureLayouts = !layouts.isEmpty(); layoutLoopCount = config.readEntry("LayoutLoopCount", NO_LOOPING); Index: BUILD/plasma-desktop-5.15.4/kcms/keyboard/keyboard_daemon.cpp =================================================================== --- BUILD/plasma-desktop-5.15.4/kcms/keyboard/keyboard_daemon.cpp +++ BUILD/plasma-desktop-5.15.4/kcms/keyboard/keyboard_daemon.cpp @@ -97,6 +97,7 @@ keyboardConfig.load(); XkbHelper::initializeKeyboardLayouts(keyboardConfig); layoutMemory.configChanged(); + keyboardConfig.save(); setupTrayIcon(); Index: kcms/keyboard/keyboard_config.cpp =================================================================== --- kcms/keyboard/keyboard_config.cpp +++ kcms/keyboard/keyboard_config.cpp @@ -107,8 +107,15 @@ // layoutStrings.append(DEFAULT_LAYOUT); // } layouts.clear(); - foreach(const QString& layoutString, layoutStrings) { - layouts.append(LayoutUnit(layoutString)); + if (layoutStrings.isEmpty()) { + QList layouts = X11Helper::getLayoutsList(); + foreach(LayoutUnit layoutUnit, layouts) { + layouts.append(layoutUnit); + } + } else { + foreach(const QString& layoutString, layoutStrings) { + layouts.append(LayoutUnit(layoutString)); + } } if( layouts.isEmpty() ) { configureLayouts = false;