unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#34929] [PATCH 00/12] Provide uniform keyboard layout configuration
@ 2019-03-20 22:32 Ludovic Courtès
  2019-03-20 23:04 ` [bug#34929] [PATCH 01/12] bootloader: Remove unused 'additional-configuration' field Ludovic Courtès
  2019-03-24 10:03 ` [bug#34929] [PATCH 00/12] Provide uniform keyboard layout configuration Julien Lepiller
  0 siblings, 2 replies; 20+ messages in thread
From: Ludovic Courtès @ 2019-03-20 22:32 UTC (permalink / raw)
  To: 34929

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 <keyboard-layout> 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 <xorg-configuration>
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 <https://issues.guix.info/issue/25453> and
<https://issues.guix.info/issue/26234>.

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 <xorg-configuration> record type.
  services: sddm, slim, gdm: Take an <xorg-configuration> record.
  services: xorg: Add a 'keyboard-layout' field in <xorg-configuration>.
  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

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2019-03-24 22:15 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-03-20 22:32 [bug#34929] [PATCH 00/12] Provide uniform keyboard layout configuration Ludovic Courtès
2019-03-20 23:04 ` [bug#34929] [PATCH 01/12] bootloader: Remove unused 'additional-configuration' field Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 02/12] bootloader: Reindent record type definition Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 03/12] Add (gnu system keyboard) Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 04/12] bootloader: Add a 'keyboard-layout' field Ludovic Courtès
2019-03-24  9:31     ` Julien Lepiller
2019-03-24 21:18       ` Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 05/12] services: xorg: Remove unused #:guile parameter Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 06/12] services: xorg: Define and <xorg-configuration> record type Ludovic Courtès
2019-03-24  9:46     ` Julien Lepiller
2019-03-24 21:18       ` Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 07/12] services: sddm, slim, gdm: Take an <xorg-configuration> record Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 08/12] services: xorg: Add a 'keyboard-layout' field in <xorg-configuration> Ludovic Courtès
2019-03-24  9:50     ` Julien Lepiller
2019-03-20 23:04   ` [bug#34929] [PATCH 09/12] vm: 'virtualized-operating-system' inherits from the user's bootloader config Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 10/12] gnu: Add loadkeys-static Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 11/12] system: Initialize console keyboard layout in the initrd Ludovic Courtès
2019-03-20 23:04   ` [bug#34929] [PATCH 12/12] doc: Document keyboard layout Ludovic Courtès
2019-03-24 10:03 ` [bug#34929] [PATCH 00/12] Provide uniform keyboard layout configuration Julien Lepiller
2019-03-24 22:14   ` bug#34929: " Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).