From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:36437) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h6jwJ-00083u-Ss for guix-patches@gnu.org; Wed, 20 Mar 2019 18:44:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h6jwI-0006jN-VY for guix-patches@gnu.org; Wed, 20 Mar 2019 18:44:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:38793) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h6jwI-0006im-M0 for guix-patches@gnu.org; Wed, 20 Mar 2019 18:44:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1h6jwI-000322-HA for guix-patches@gnu.org; Wed, 20 Mar 2019 18:44:02 -0400 Subject: [bug#34929] [PATCH 00/12] Provide uniform keyboard layout configuration Resent-Message-ID: Received: from eggs.gnu.org ([209.51.188.92]:36138) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h6jw0-0007Yo-Ok for guix-patches@gnu.org; Wed, 20 Mar 2019 18:43:45 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Wed, 20 Mar 2019 23:32:29 +0100 Message-Id: <20190320223229.24417-1-ludo@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 34929@debbugs.gnu.org Hello Guix! This patch series attempts to address a longstanding issue in Guix: keyboard layout configuration. The end result is that you can configure the layout for GRUB, the Linux console, and Xorg using a single record, which directly corresponds to an XKB layout specification. The three things still have to be configured separately. Here’s an example where GRUB, Linux, and Xorg use the same layout: (operating-system ;; ... (keyboard-layout (keyboard-layout "tr")) ;for the console (bootloader (bootloader-configuration (bootloader grub-efi-bootloader) (target "/boot/efi") (keyboard-layout keyboard-layout))) ;for GRUB (services (modify-services %desktop-services (slim-service-type config => (slim-configuration (inherit config) (xorg-configuration (xorg-configuration ;for Xorg (keyboard-layout keyboard-layout)))))))) Clearly the Xorg bit is suboptimal. I don’t see any obvious way to simplify this part unfortunately because the record is aggregated by ‘slim-configuration’ & co. (there’s no Xorg service that we could extend.) That’s something we can still improve afterwards, though. Potentially controversial issues: 1. The Xorg API is changed in an incompatible way: ‘xorg-start-command’ has a different prototype, the ‘startx’ field of ‘slim-configuration’ is gone, etc. If you were using these, your config will have to be adjusted to use the new ‘xorg-configuration’ record. (But hey, we’re still pre-1.0!). 2. Since both fields and the record constructor are called ‘keyboard-layout’, you could easily have name clashes (it’s more of an aesthetic consideration, not a showstopper.) After that we should probably change the installer to generate the right incantations. These patches fix and . Feedback welcome! And thanks to nee for the initial inspiration! Ludo’. Ludovic Courtès (12): bootloader: Remove unused 'additional-configuration' field. bootloader: Reindent record type definition. Add (gnu system keyboard). bootloader: Add a 'keyboard-layout' field. services: xorg: Remove unused #:guile parameter. services: xorg: Define and record type. services: sddm, slim, gdm: Take an record. services: xorg: Add a 'keyboard-layout' field in . vm: 'virtualized-operating-system' inherits from the user's bootloader config. gnu: Add loadkeys-static. system: Initialize console keyboard layout in the initrd. doc: Document keyboard layout. doc/guix.texi | 305 ++++++++++++++++++++++++------------ gnu.scm | 3 +- gnu/bootloader.scm | 43 ++--- gnu/bootloader/grub.scm | 35 +++++ gnu/build/linux-boot.scm | 15 +- gnu/local.mk | 1 + gnu/packages/linux.scm | 37 +++++ gnu/services/sddm.scm | 14 +- gnu/services/xorg.scm | 182 ++++++++++++--------- gnu/system.scm | 7 +- gnu/system/keyboard.scm | 98 ++++++++++++ gnu/system/linux-initrd.scm | 26 ++- gnu/system/vm.scm | 1 + 13 files changed, 561 insertions(+), 206 deletions(-) create mode 100644 gnu/system/keyboard.scm -- 2.21.0