* [bug#35120] [PATCH 0/3] Simpler Xorg keyboard layout config, updated doc @ 2019-04-03 12:36 Ludovic Courtès 2019-04-03 12:39 ` [bug#35120] [PATCH 1/3] services: xorg: Add 'set-xorg-configuration' Ludovic Courtès 2019-04-05 13:48 ` bug#35120: [PATCH 0/3] Simpler Xorg keyboard layout config, updated doc Ludovic Courtès 0 siblings, 2 replies; 5+ messages in thread From: Ludovic Courtès @ 2019-04-03 12:36 UTC (permalink / raw) To: 35120 Hi, Here are patches to simplify Xorg keyboard layout configuration a bit and to update documentation. Thoughts? Ludo’. 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [bug#35120] [PATCH 1/3] services: xorg: Add 'set-xorg-configuration'. 2019-04-03 12:36 [bug#35120] [PATCH 0/3] Simpler Xorg keyboard layout config, updated doc Ludovic Courtès @ 2019-04-03 12:39 ` Ludovic Courtès 2019-04-03 12:39 ` [bug#35120] [PATCH 2/3] doc: Explain how to change the keyboard layout at run time Ludovic Courtès 2019-04-03 12:39 ` [bug#35120] [PATCH 3/3] services: console-keymap: Deprecate Ludovic Courtès 2019-04-05 13:48 ` bug#35120: [PATCH 0/3] Simpler Xorg keyboard layout config, updated doc Ludovic Courtès 1 sibling, 2 replies; 5+ messages in thread From: Ludovic Courtès @ 2019-04-03 12:39 UTC (permalink / raw) To: 35120 * 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(-) diff --git a/doc/guix.texi b/doc/guix.texi index 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 of diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 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 here diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl index 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 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [bug#35120] [PATCH 2/3] doc: Explain how to change the keyboard layout at run time. 2019-04-03 12:39 ` [bug#35120] [PATCH 1/3] services: xorg: Add 'set-xorg-configuration' Ludovic Courtès @ 2019-04-03 12:39 ` Ludovic Courtès 2019-04-03 12:39 ` [bug#35120] [PATCH 3/3] services: console-keymap: Deprecate Ludovic Courtès 1 sibling, 0 replies; 5+ messages in thread From: Ludovic Courtès @ 2019-04-03 12:39 UTC (permalink / raw) To: 35120 * doc/guix.texi (Keyboard Layout): Mention GNOME's "Region & Language", setxkbmap, and loadkeys. --- doc/guix.texi | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index 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 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [bug#35120] [PATCH 3/3] services: console-keymap: Deprecate. 2019-04-03 12:39 ` [bug#35120] [PATCH 1/3] services: xorg: Add 'set-xorg-configuration' Ludovic Courtès 2019-04-03 12:39 ` [bug#35120] [PATCH 2/3] doc: Explain how to change the keyboard layout at run time Ludovic Courtès @ 2019-04-03 12:39 ` Ludovic Courtès 1 sibling, 0 replies; 5+ messages in thread From: Ludovic Courtès @ 2019-04-03 12:39 UTC (permalink / raw) To: 35120 * 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(-) diff --git a/doc/guix.texi b/doc/guix.texi index 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-type diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 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 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* bug#35120: [PATCH 0/3] Simpler Xorg keyboard layout config, updated doc 2019-04-03 12:36 [bug#35120] [PATCH 0/3] Simpler Xorg keyboard layout config, updated doc Ludovic Courtès 2019-04-03 12:39 ` [bug#35120] [PATCH 1/3] services: xorg: Add 'set-xorg-configuration' Ludovic Courtès @ 2019-04-05 13:48 ` Ludovic Courtès 1 sibling, 0 replies; 5+ messages in thread From: Ludovic Courtès @ 2019-04-05 13:48 UTC (permalink / raw) To: 35120-done Ludovic Courtès <ludo@gnu.org> skribis: > services: xorg: Add 'set-xorg-configuration'. > doc: Explain how to change the keyboard layout at run time. > services: console-keymap: Deprecate. Pushed! 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 and co. Help welcome. :-) Ludo’. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-04-05 13:57 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-03 12:36 [bug#35120] [PATCH 0/3] Simpler Xorg keyboard layout config, updated doc Ludovic Courtès 2019-04-03 12:39 ` [bug#35120] [PATCH 1/3] services: xorg: Add 'set-xorg-configuration' Ludovic Courtès 2019-04-03 12:39 ` [bug#35120] [PATCH 2/3] doc: Explain how to change the keyboard layout at run time Ludovic Courtès 2019-04-03 12:39 ` [bug#35120] [PATCH 3/3] services: console-keymap: Deprecate Ludovic Courtès 2019-04-05 13:48 ` bug#35120: [PATCH 0/3] Simpler Xorg keyboard layout config, updated doc 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).