services: kmscon: Add keyboard-layout fields.

* gnu/services/base.scm (<kmscon-configuration>): Add keyboard-layout fields.
* doc/guix.texi (Base Services): Document them.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
This commit is contained in:
luhui 2021-06-21 22:58:06 +08:00 committed by Mathieu Othacehe
parent 5ed105a8bb
commit fda0959a14
No known key found for this signature in database
GPG key ID: 8354763531769CA6
2 changed files with 28 additions and 2 deletions

View file

@ -93,6 +93,7 @@ Copyright @copyright{} 2021 B. Wilson@*
Copyright @copyright{} 2021 Xinglu Chen@*
Copyright @copyright{} 2021 Raghav Gururajan@*
Copyright @copyright{} 2021 Domagoj Stolfa@*
Copyright @copyright{} 2021 Hui Lu@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@ -15282,6 +15283,14 @@ Font engine used in Kmscon.
@item @code{font-size} (default: @code{12})
Font size used in Kmscon.
@item @code{keyboard-layout} (default: @code{#f})
If this is @code{#f}, Kmscon uses the default keyboard layout---usually US
English (``qwerty'') for a 105-key PC keyboard.
Otherwise this must be a @code{keyboard-layout} object specifying the
keyboard layout. @xref{Keyboard Layout}, for more information on how to
specify the keyboard layout.
@item @code{kmscon} (default: @var{kmscon})
The Kmscon package to use.

View file

@ -14,6 +14,7 @@
;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Hui Lu <luhuins@163.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -41,6 +42,7 @@ (define-module (gnu services base)
#:use-module (gnu system shadow) ; 'user-account', etc.
#:use-module (gnu system uuid)
#:use-module (gnu system file-systems) ; 'file-system', etc.
#:use-module (gnu system keyboard)
#:use-module (gnu system mapped-devices)
#:use-module ((gnu system linux-initrd)
#:select (file-system-packages))
@ -2267,7 +2269,9 @@ (define-record-type* <kmscon-configuration>
(font-engine kmscon-configuration-font-engine
(default "pango"))
(font-size kmscon-configuration-font-size
(default 12)))
(default 12))
(keyboard-layout kmscon-configuration-keyboard-layout
(default #f))) ; #f | <keyboard-layout>
(define kmscon-service-type
(shepherd-service-type
@ -2280,7 +2284,8 @@ (define kmscon-service-type
(auto-login (kmscon-configuration-auto-login config))
(hardware-acceleration? (kmscon-configuration-hardware-acceleration? config))
(font-engine (kmscon-configuration-font-engine config))
(font-size (kmscon-configuration-font-size config)))
(font-size (kmscon-configuration-font-size config))
(keyboard-layout (kmscon-configuration-keyboard-layout config)))
(define kmscon-command
#~(list
@ -2289,6 +2294,18 @@ (define kmscon-command
"--no-switchvt" ;Prevent a switch to the virtual terminal.
"--font-engine" #$font-engine
"--font-size" #$(number->string font-size)
#$@(if keyboard-layout
(let* ((layout (keyboard-layout-name keyboard-layout))
(variant (keyboard-layout-variant keyboard-layout))
(model (keyboard-layout-model keyboard-layout))
(options (keyboard-layout-options keyboard-layout)))
`("--xkb-layout" ,layout
,@(if variant `("--xkb-variant" ,variant) '())
,@(if model `("--xkb-model" ,model) '())
,@(if (null? options)
'()
`("--xkb-options" ,(string-join options ",")))))
'())
#$@(if hardware-acceleration? '("--hwaccel") '())
"--login" "--"
#$login-program #$@login-arguments