37 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
						|
From: Victor Fuentes <vmfuentes64@gmail.com>
 | 
						|
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 );
 |