[PATCH 0/3] Simpler Xorg keyboard layout config, updated doc

DoneSubmitted by Ludovic Courtès.
One participant
  • Ludovic Courtès
Ludovic Courtès wrote on 3 Apr 2019 14:36
(address . guix-patches@gnu.org)(name . Ludovic Courtès)(address . ludo@gnu.org)
Here are patches to simplify Xorg keyboard layout configuration a bitand to update documentation.
Ludovic Courtès (3): services: xorg: Add 'set-xorg-configuration'. doc: Explain how to change the keyboard layout at run time. services: console-keymap: Deprecate.
doc/guix.texi | 77 +++++++++++++++++++------------- gnu/services/base.scm | 3 +- gnu/services/xorg.scm | 22 ++++++++- gnu/system/examples/desktop.tmpl | 14 ++++-- 4 files changed, 81 insertions(+), 35 deletions(-)
-- 2.21.0
Ludovic Courtès wrote on 3 Apr 2019 14:39
[PATCH 1/3] services: xorg: Add 'set-xorg-configuration'.
(address . 35120@debbugs.gnu.org)(name . Ludovic Courtès)(address . ludo@gnu.org)
* gnu/services/xorg.scm (gdm-service-type)[compose, extend]: New fields.(set-xorg-configuration): New procedure.* doc/guix.texi (Keyboard Layout): Use it.(X Window): Document it.* gnu/system/examples/desktop.tmpl: Add 'keyboard-layout' fields.--- doc/guix.texi | 24 +++++++++++++++++------- gnu/services/xorg.scm | 22 +++++++++++++++++++++- gnu/system/examples/desktop.tmpl | 14 +++++++++++--- 3 files changed, 49 insertions(+), 11 deletions(-)
Toggle diff (144 lines)diff --git a/doc/guix.texi b/doc/guix.texiindex 616c2ef305..96755a6cce 100644--- a/doc/guix.texi+++ b/doc/guix.texi@@ -11077,6 +11077,7 @@ Let's say you want your system to use the Turkish keyboard layout throughout your system---bootloader, console, and Xorg. Here's what your system configuration would look like: +@findex set-xorg-configuration @lisp ;; Using the Turkish layout for the bootloader, the console, ;; and for Xorg.@@ -11088,18 +11089,17 @@ configuration would look like: (bootloader grub-efi-bootloader) (target "/boot/efi") (keyboard-layout keyboard-layout))) ;for GRUB- (services (modify-services %desktop-services- (gdm-service-type config =>- (gdm-configuration- (inherit config)- (xorg-configuration+ (services (cons (set-xorg-configuration (xorg-configuration ;for Xorg- (keyboard-layout keyboard-layout))))))))+ (keyboard-layout keyboard-layout)))+ %desktop-services))) @end lisp In the example above, for GRUB and for Xorg, we just refer to the @code{keyboard-layout} field defined above, but we could just as well refer to-a different layout.+a different layout. The @code{set-xorg-configuration} procedure communicates+the desired Xorg configuration to the graphical log-in manager, by default+GDM. @node Locales @section Locales@@ -13566,6 +13566,16 @@ default is @code{-nolisten tcp}. @end table @end deftp +@deffn {Scheme Procedure} set-xorg-configuration @var{config} @+ [@var{login-manager-service-type}]+Tell the log-in manager (of type @var{login-manager-service-type}) to use+@var{config}, an <xorg-configuration> record.++Since the Xorg configuration is embedded in the log-in manager's+configuration---e.g., @code{gdm-configuration}---this procedure provides a+shorthand to set the Xorg configuration.+@end deffn+ @deffn {Scheme Procedure} xorg-start-command [@var{config}] Return a @code{startx} script in which the modules, fonts, etc. specified in @var{config}, are available. The result should be used in place ofdiff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scmindex 7745f9a3cc..26ca0d4f1f 100644--- a/gnu/services/xorg.scm+++ b/gnu/services/xorg.scm@@ -99,7 +99,8 @@ gdm-configuration gdm-service-type- gdm-service))+ gdm-service+ set-xorg-configuration)) ;;; Commentary: ;;;@@ -875,6 +876,15 @@ the GNOME desktop environment.") xorg-configuration-keyboard-layout gdm-configuration-xorg)))) + ;; For convenience, this service can be extended with an+ ;; <xorg-configuration> record. Take the first one that+ ;; comes.+ (compose first)+ (extend (lambda (config xorg-configuration)+ (gdm-configuration+ (inherit config)+ (xorg-configuration xorg-configuration))))+ (default-value (gdm-configuration)) (description "Run the GNOME Desktop Manager (GDM), a program that allows@@ -908,4 +918,14 @@ password." (gdm gdm) (allow-empty-passwords? allow-empty-passwords?)))) +(define* (set-xorg-configuration config+ #:optional+ (login-manager-service-type+ gdm-service-type))+ "Tell the log-in manager (of type @var{login-manager-service-type}) to use+@var{config}, an <xorg-configuration> record."+ (simple-service 'set-xorg-configuration+ login-manager-service-type+ config))+ ;;; xorg.scm ends herediff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmplindex ff4c12b24a..baeb5e2d77 100644--- a/gnu/system/examples/desktop.tmpl+++ b/gnu/system/examples/desktop.tmpl@@ -3,7 +3,7 @@ ;; root partition is encrypted with LUKS. (use-modules (gnu) (gnu system nss))-(use-service-modules desktop)+(use-service-modules desktop xorg) (use-package-modules certs gnome) (operating-system@@ -11,11 +11,16 @@ (timezone "Europe/Paris") (locale "en_US.utf8") + ;; Choose US English keyboard layout. The "altgr-intl"+ ;; variant provides dead keys for accented characters.+ (keyboard-layout (keyboard-layout "us" "altgr-intl"))+ ;; 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")))+ (target "/boot/efi")+ (keyboard-layout keyboard-layout))) ;; Specify a mapped device for the encrypted root partition. ;; The UUID is that returned by 'cryptsetup luksUUID'.@@ -58,7 +63,10 @@ ;; include the X11 log-in service, networking with ;; NetworkManager, and more. (services (append (list (service gnome-desktop-service-type)- (service xfce-desktop-service-type))+ (service xfce-desktop-service-type)+ (set-xorg-configuration+ (xorg-configuration+ (keyboard-layout keyboard-layout)))) %desktop-services)) ;; Allow resolution of '.local' host names with mDNS.-- 2.21.0
Ludovic Courtès wrote on 3 Apr 2019 14:39
[PATCH 2/3] doc: Explain how to change the keyboard layout at run time.
(address . 35120@debbugs.gnu.org)(name . Ludovic Courtès)(address . ludo@gnu.org)
* doc/guix.texi (Keyboard Layout): Mention GNOME's "Region & Language",setxkbmap, and loadkeys.--- doc/guix.texi | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
Toggle diff (50 lines)diff --git a/doc/guix.texi b/doc/guix.texiindex 96755a6cce..1b0bd1de58 100644--- a/doc/guix.texi+++ b/doc/guix.texi@@ -11002,6 +11002,8 @@ special-case and is automatically added whether or not it is specified. @node Keyboard Layout @section Keyboard Layout +@cindex keyboard layout+@cindex keymap To specify what each key of your keyboard does, you need to tell the operating system what @dfn{keyboard layout} you want to use. The default, when nothing is specified, is the US English QWERTY layout for 105-key PC keyboards.@@ -11101,6 +11103,34 @@ a different layout. The @code{set-xorg-configuration} procedure communicates the desired Xorg configuration to the graphical log-in manager, by default GDM. +We've discussed how to specify the @emph{default} keyboard layout of your+system when it starts, but you can also adjust it at run time:++@itemize+@item+If you're using GNOME, its settings panel has a ``Region & Language'' entry+where you can select one or more keyboard layouts.++@item+Under Xorg, the @command{setxkbmap} command (from the same-named package)+allows you to change the current layout. For example, this is how you would+change the layout to US Dvorak:++@example+setxkbmap us dvorak+@end example++@item+The @code{loadkeys} command changes the keyboard layout in effect in the Linux+console. However, note that @code{loadkeys} does @emph{not} use the XKB+keyboard layout categorization described above. The command below loads the+French bépo layout:++@example+loadkeys fr-bepo+@end example+@end itemize+ @node Locales @section Locales -- 2.21.0
Ludovic Courtès wrote on 3 Apr 2019 14:39
[PATCH 3/3] services: console-keymap: Deprecate.
(address . 35120@debbugs.gnu.org)(name . Ludovic Courtès)(address . ludo@gnu.org)
* gnu/services/base.scm (console-keymap-service): Mark as deprecated.* doc/guix.texi (Base Services): Remove its documentation.--- doc/guix.texi | 23 ----------------------- gnu/services/base.scm | 3 ++- 2 files changed, 2 insertions(+), 24 deletions(-)
Toggle diff (50 lines)diff --git a/doc/guix.texi b/doc/guix.texiindex 1b0bd1de58..1c82579afc 100644--- a/doc/guix.texi+++ b/doc/guix.texi@@ -12023,29 +12023,6 @@ This is the name of the file where some random bytes are saved by It defaults to @file{/var/lib/random-seed}. @end defvr -@cindex keymap-@cindex keyboard-@deffn {Scheme Procedure} console-keymap-service @var{files} ...-@cindex keyboard layout-Return a service to load console keymaps from @var{files} using-@command{loadkeys} command. Most likely, you want to load some default-keymap, which can be done like this:--@example-(console-keymap-service "dvorak")-@end example--Or, for example, for a Swedish keyboard, you may need to combine-the following keymaps:-@example-(console-keymap-service "se-lat6" "se-fi-lat6")-@end example--Also you can specify a full file name (or file names) of your keymap(s).-See @code{man loadkeys} for details.--@end deffn- @cindex mouse @cindex gpm @defvr {Scheme Variable} gpm-service-typediff --git a/gnu/services/base.scm b/gnu/services/base.scmindex 04b123b833..bf8510a71d 100644--- a/gnu/services/base.scm+++ b/gnu/services/base.scm@@ -719,7 +719,8 @@ to add @var{device} to the kernel's entropy pool. The service will fail if #$@files)))) (respawn? #f))))) -(define (console-keymap-service . files)+(define-deprecated (console-keymap-service #:rest files)+ #f "Return a service to load console keymaps from @var{files}." (service console-keymap-service-type files)) -- 2.21.0
Ludovic Courtès wrote on 5 Apr 2019 15:48
Re: [bug#35120] [PATCH 0/3] Simpler Xorg keyboard layout config, updated doc
(address . 35120-done@debbugs.gnu.org)
Ludovic Courtès <ludo@gnu.org> skribis:
Toggle quote (4 lines)> services: xorg: Add 'set-xorg-configuration'.> doc: Explain how to change the keyboard layout at run time.> services: console-keymap: Deprecate.
As Julien noted on IRC, ‘set-xorg-configuration’ only works for‘gdm-service-type’ right now. It’d be great to do the same for SLiM andco. Help welcome. :-)
Your comment

This issue is archived.

To comment on this conversation send email to 35120@debbugs.gnu.org