[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/07: services: xorg: Add 'set-xorg-configuration'.
From: |
guix-commits |
Subject: |
05/07: services: xorg: Add 'set-xorg-configuration'. |
Date: |
Fri, 5 Apr 2019 09:45:13 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 305a732a0a19c5810aab401aa7d70eba02ac386b
Author: Ludovic Courtès <address@hidden>
Date: Wed Apr 3 13:55:06 2019 +0200
services: xorg: Add 'set-xorg-configuration'.
* 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 616c2ef..96755a6 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:
address@hidden 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
address@hidden {Scheme Procedure} set-xorg-configuration @var{config} @
+ address@hidden
+Tell the log-in manager (of type @var{login-manager-service-type}) to use
address@hidden, 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.
address@hidden deffn
+
@deffn {Scheme Procedure} xorg-start-command address@hidden
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 7745f9a..26ca0d4 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
address@hidden, 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 ff4c12b..baeb5e2 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.
- branch master updated (208946e -> 3a66563), guix-commits, 2019/04/05
- 01/07: services: dbus: Add 'wrapped-dbus-service'., guix-commits, 2019/04/05
- 07/07: services: console-keymap: Deprecate., guix-commits, 2019/04/05
- 05/07: services: xorg: Add 'set-xorg-configuration'.,
guix-commits <=
- 02/07: gnu: Add localed, extracted from systemd., guix-commits, 2019/04/05
- 03/07: services: dbus: 'wrapped-dbus-service' accepts a list of variables., guix-commits, 2019/04/05
- 06/07: doc: Explain how to change the keyboard layout at run time., guix-commits, 2019/04/05
- 04/07: services: Add 'localed' service type and have GDM extend it., guix-commits, 2019/04/05