git: 3eb3ecdb7238 - main - x11/sddm: Fix keyboard layout setting when using Breeze theme

Gleb Popov <[email protected]> Sat, 01 Aug 2026 16:00:26 +0000
Newsgroups gmane.os.freebsd.devel.cvs.ports
Message-ID <[email protected]>
The branch main has been updated by arrowd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3eb3ecdb7238a60bcecbbb1265c7489668867714

commit 3eb3ecdb7238a60bcecbbb1265c7489668867714
Author:     Gleb Popov <[email protected]>
AuthorDate: 2026-08-01 14:52:11 +0000
Commit:     Gleb Popov <[email protected]>
CommitDate: 2026-08-01 15:25:58 +0000

    x11/sddm: Fix keyboard layout setting when using Breeze theme
    
    PR:             296696
---
 x11/sddm/Makefile                        |  5 +++--
 x11/sddm/files/patch-data_scripts_Xsetup | 20 ++++++++++++++++++++
 x11/sddm/files/sddm.in                   |  4 ++++
 3 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/x11/sddm/Makefile b/x11/sddm/Makefile
index 33b42d349f8b..5d6f5defaba5 100644
--- a/x11/sddm/Makefile
+++ b/x11/sddm/Makefile
@@ -2,7 +2,7 @@ PORTNAME=	sddm
 DISTVERSIONPREFIX=	v
 DISTVERSION=	0.21.0-36
 DISTVERSIONSUFFIX=	-gc2b97dd
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	x11
 
 MAINTAINER=	[email protected]
@@ -24,7 +24,8 @@ RUN_DEPENDS=	consolekit2>1.2.5:sysutils/consolekit2 \
 		xauth:x11/xauth \
 		xmessage:x11/xmessage \
 		xrdb:x11/xrdb \
-		xsetroot:x11/xsetroot
+		xsetroot:x11/xsetroot \
+		setxkbmap:x11/setxkbmap
 
 USES=		cmake compiler:c++17-lang cpe gl pkgconfig python:build qt:6 xorg
 CPE_VENDOR=	${PORTNAME}_project
diff --git a/x11/sddm/files/patch-data_scripts_Xsetup b/x11/sddm/files/patch-data_scripts_Xsetup
new file mode 100644
index 000000000000..988dac46f9df
--- /dev/null
+++ b/x11/sddm/files/patch-data_scripts_Xsetup
@@ -0,0 +1,20 @@
+--- data/scripts/Xsetup.orig	2025-01-31 09:57:01 UTC
++++ data/scripts/Xsetup
+@@ -1,3 +1,17 @@
+ #!/bin/sh
+ # Xsetup - run as root before the login dialog appears
+ 
++if /usr/sbin/sysrc -ne sddm_xkb_layout; then
++    sddm_xkb_layout=$(/usr/sbin/sysrc -ne sddm_xkb_layout)
++elif /usr/sbin/sysrc -ne sddm_lang; then
++    sddm_lang=$(/usr/sbin/sysrc -ne sddm_lang)
++    sddm_xkb_layout=$(echo $sddm_lang | sed 's/.*_//' | tr '[:upper:]' '[:lower:]')
++else
++    sddm_xkb_layout="us"
++fi
++
++if [ "$sddm_xkb_layout" != "us" ]; then
++    sddm_xkb_layout="us,${sddm_xkb_layout}"
++fi
++
++setxkbmap -layout $sddm_xkb_layout
diff --git a/x11/sddm/files/sddm.in b/x11/sddm/files/sddm.in
index 13631420f546..b5358af736bf 100644
--- a/x11/sddm/files/sddm.in
+++ b/x11/sddm/files/sddm.in
@@ -15,6 +15,10 @@ rcvar=sddm_enable
 
 load_rc_config ${name}
 
+# sddm_lang also controls the list of keyboard layouts in the breeze theme
+# if your layouts are messed up you can override it by setting
+# sddm_xkb_layout="us,de,fr,it,ru"
+# in /etc/rc.conf
 : ${sddm_lang="en_US"} # .UTF-8 suffix will be added later to comply with locale format
 : ${sddm_enable="NO"}