diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp index 720588810..af0dd1c8d 100644 --- a/src/modules/keyboard/Config.cpp +++ b/src/modules/keyboard/Config.cpp @@ -219,7 +219,10 @@ Config::xkbApply() { m_additionalLayoutInfo.additionalVariant, m_selectedVariant }, m_additionalLayoutInfo.groupSwitcher ) ); - + QString xkbmap = QString( "[('xkb','%1\%2'),('xkb','%3\%4')]").arg( + m_selectedLayout, ((!m_selectedVariant.isEmpty()) ? "+" + m_selectedVariant : ""), + m_additionalLayoutInfo.additionalLayout, ((!m_additionalLayoutInfo.additionalVariant.isEmpty()) ? "+" + m_additionalLayoutInfo.additionalVariant : "")); + QProcess::execute( "sh", { "-c", "if command -v gsettings; then gsettings set org.gnome.desktop.input-sources sources \"$0\"; fi", xkbmap }); cDebug() << "xkbmap selection changed to: " << m_selectedLayout << '-' << m_selectedVariant << "(added " << m_additionalLayoutInfo.additionalLayout << "-" << m_additionalLayoutInfo.additionalVariant << " since current layout is not ASCII-capable)"; @@ -227,6 +230,8 @@ Config::xkbApply() else { QProcess::execute( "setxkbmap", xkbmap_layout_args( m_selectedLayout, m_selectedVariant ) ); + QString xkbmap = QString( "[('xkb','%1\%2')]").arg( m_selectedLayout, ((!m_selectedVariant.isEmpty()) ? "+" + m_selectedVariant : "") ); + QProcess::execute( "sh", { "-c", "if command -v gsettings; then gsettings set org.gnome.desktop.input-sources sources \"$0\"; fi", xkbmap }); cDebug() << "xkbmap selection changed to: " << m_selectedLayout << '-' << m_selectedVariant; } m_setxkbmapTimer.disconnect( this );