From: "Ludovic Courtès" <ludo@gnu.org>
To: 35120@debbugs.gnu.org
Subject: [bug#35120] [PATCH 1/3] services: xorg: Add 'set-xorg-configuration'.
Date: Wed, 3 Apr 2019 14:39:51 +0200 [thread overview]
Message-ID: <20190403123953.29853-1-ludo@gnu.org> (raw)
In-Reply-To: <20190403123626.29711-1-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(-)
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
next prev parent reply other threads:[~2019-04-03 12:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190403123953.29853-1-ludo@gnu.org \
--to=ludo@gnu.org \
--cc=35120@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).