about summary refs log tree commit diff
path: root/pkgs/tools/misc/calamares/waylandkbd.patch
blob: 4c282b04062f2817cd331412786b0af528edc05d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp
index d8b1e8e86..b2e1b7b5f 100644
--- a/src/modules/keyboard/Config.cpp
+++ b/src/modules/keyboard/Config.cpp
@@ -307,7 +307,10 @@ Config::xkbApply()
                            xkbmap_layout_args( { m_additionalLayoutInfo.additionalLayout, m_selectedLayout },
                                                { 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)";
@@ -315,6 +318,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 );