Subject: bug#39606: closed (Re: bug#39606: Keyboard layout defined by 'set-xorg-configuration' is not honored by GDM.)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 22 Oct 2020 19:55:02 +0000

Your bug report

#39606: Keyboard layout defined by 'set-xorg-configuration' is not honored by GDM.

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
39606: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=39606
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#39606: Keyboard layout defined by 'set-xorg-configuration' is not honored by GDM.
From: Maxim Cournoyer <[email-masked]>
To: [email-masked]
Date: Thu, 22 Oct 2020 15:54:19 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello!

I'm happy to report this was due to mis-configuration on my part.  More
specifically, it it was missing the xorg-configuration modification bit,
which is documented.  Testing in a VM using the following, modified
configuration cannot reproduce the problem:

--8<---------------cut here---------------start------------->8---
diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl
index d5a63dc457..42e7891641 100644
--- a/gnu/system/examples/lightweight-desktop.tmpl
+++ b/gnu/system/examples/lightweight-desktop.tmpl
@@ -3,7 +3,7 @@
 ;; environments.
 
 (use-modules (gnu) (gnu system nss))
-(use-service-modules desktop)
+(use-service-modules desktop xorg)
 (use-package-modules bootloaders certs emacs emacs-xyz ratpoison suckless wm
                      xorg)
 
@@ -11,12 +11,14 @@
   (host-name "antelope")
   (timezone "Europe/Paris")
   (locale "en_US.utf8")
+  (keyboard-layout (keyboard-layout "jp"))
 
   ;; Use the UEFI variant of GRUB with the EFI System
   ;; Partition mounted on /boot/efi.
   (bootloader (bootloader-configuration
-                (bootloader grub-efi-bootloader)
-                (target "/boot/efi")))
+               (bootloader grub-efi-bootloader)
+               (target "/boot/efi")
+               (keyboard-layout keyboard-layout)))
 
   ;; Assume the target root file system is labelled "my-root",
   ;; and the EFI System Partition has UUID 1234-ABCD.
@@ -53,7 +55,10 @@
 
   ;; Use the "desktop" services, which include the X11
   ;; log-in service, networking with NetworkManager, and more.
-  (services %desktop-services)
+  (services (cons (set-xorg-configuration
+                   (xorg-configuration  ;for Xorg
+                    (keyboard-layout keyboard-layout)))
+                  %desktop-services))
 
   ;; Allow resolution of '.local' host names with mDNS.
   (name-service-switch %mdns-host-lookup-nss))
--8<---------------cut here---------------end--------------->8---

Closing :-)

Maxim

Subject: Keyboard layout defined by 'set-xorg-configuration' is not honored by GDM.
From: Maxim Cournoyer <[email-masked]>
To: bug-guix <[email-masked]>
Date: Fri, 14 Feb 2020 14:23:47 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello!

I based my operating system configuration on
gnu/system/examples/desktop.tmpl in the Guix tree, and was surprised
that my dvorak keyboard is in effect everywhere except at the GDM
greeter screen (where it is QWERTY).

Here's the full config:

--8<---------------cut here---------------start------------->8---
(use-modules (gnu)
	     (gnu system nss)
	     (srfi srfi-1))

(use-service-modules admin desktop docker ssh xorg)
(use-package-modules android certs ratpoison)

(operating-system
  (host-name "raisin")
  (timezone "America/Montreal")
  (locale "en_US.utf8")

  ;; Choose US English keyboard layout.  The "altgr-intl"
  ;; variant provides dead keys for accented characters.
  (keyboard-layout (keyboard-layout "dvorak"))

  ;; Use the UEFI variant of GRUB with the EFI System
  ;; Partition mounted on /boot/efi.
  (bootloader (bootloader-configuration
	       (bootloader grub-efi-bootloader)
	       (target "/boot/efi")
	       (keyboard-layout keyboard-layout)))

  ;; Radeon requires a blob else prevents booting.  Blacklisting the
  ;; radeon driver allows falling back to VESA.
  (kernel-arguments '("quiet" "modprobe.blacklist=radeon"))

  ;; Specify a mapped device for the encrypted root partition.
  ;; The UUID is that returned by 'cryptsetup luksUUID'.
  (mapped-devices
   (list (mapped-device
	  (source (uuid "f85c0627-1f6f-48b9-a2c2-6c12594a7bd1"))
	  (target "btrfs-pool-1")
	  (type luks-device-mapping))))

  (file-systems (cons*
		 (file-system
		   (device (file-system-label "btrfs-pool-1"))
		   (mount-point "/")
		   (type "btrfs")
		   (options '(("subvol" . "rootfs")
			      ("compress" . "zstd")))
		   (dependencies mapped-devices))
		 (file-system
		   (device (file-system-label "btrfs-pool-1"))
		   (mount-point "/home")
		   (type "btrfs")
		   (options '(("subvol" . "homefs")
			      ("compress" . "zstd")))
		   (dependencies mapped-devices))
		 (file-system
		   (device (uuid "209E-67AD" 'fat))
		   (mount-point "/boot/efi")
		   (type "vfat"))
		 %base-file-systems))

  (swap-devices '("/swap/swapfile"))

  (users (cons (user-account
		(name "mcournoyer")
		(group "users")
		(supplementary-groups '("wheel" "netdev"
					"audio" "video"
					"kvm" "docker"
					"adbusers")))
	       %base-user-accounts))

  (groups (cons* (user-group (system? #t)
			     (name "adbusers"))
		 %base-groups))

  ;; This is where we specify system-wide packages.
  (packages (cons* ratpoison
		   nss-certs		;for HTTPS access
		   %base-packages))

  ;; SSH, Docker
  (services
   (cons*
    (service rottlog-service-type)
    (service openssh-service-type
	     (openssh-configuration
	      (port-number 22)
	      (permit-root-login #t)))
    (service docker-service-type)
    (set-xorg-configuration (xorg-configuration
			     (keyboard-layout keyboard-layout)))
    (modify-services %desktop-services
      ;; Enable using adb as a simple user with a multitude of devices.
      (udev-service-type config =>
			 (udev-configuration
			  (inherit config)
			  (rules (cons* android-udev-rules
					(udev-configuration-rules config))))))))

  ;; Allow resolution of '.local' host names with mDNS.
  (name-service-switch %mdns-host-lookup-nss))
--8<---------------cut here---------------end--------------->8---

Maxim