From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Victor Fuentes Date: Thu, 1 Aug 2024 16:03:14 -0400 Subject: [PATCH] Fix setting the kayboard layout on GNOME wayland. By default the module uses the setxkbmap, which will not change the keyboard --- src/modules/keyboard/Config.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp index ad6bee6f7..4d43abe53 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 );