[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/05: installer: keymap: Do not fail on non-kmscon terminals.
From: |
guix-commits |
Subject: |
01/05: installer: keymap: Do not fail on non-kmscon terminals. |
Date: |
Wed, 5 Dec 2018 08:12:04 -0500 (EST) |
mothacehe pushed a commit to branch wip-newt-installer
in repository guix.
commit 88c34d37db951eb2dd3cffe7aa9033de3ae87fd2
Author: Mathieu Othacehe <address@hidden>
Date: Wed Dec 5 21:53:40 2018 +0900
installer: keymap: Do not fail on non-kmscon terminals.
kmscon-update-keymap fails on non kmscon terminals because KEYMAP_UPDATE
environment variable is not defined. As it is convenient to test the
installer
on a regular terminal, do nothing if KEYMAP_UPDATE is missing.
* gnu/installer/keymap.scm (kmscon-update-keymap): Do nothing if
KEYMAP_UPDATE
is not defined.
---
gnu/installer/keymap.scm | 36 +++++++++++++++++++++---------------
1 file changed, 21 insertions(+), 15 deletions(-)
diff --git a/gnu/installer/keymap.scm b/gnu/installer/keymap.scm
index d9f8656..d66b376 100644
--- a/gnu/installer/keymap.scm
+++ b/gnu/installer/keymap.scm
@@ -149,18 +149,24 @@ Configuration Database, describing possible XKB
configurations."
(values models layouts)))))
(define (kmscon-update-keymap model layout variant)
- (let ((keymap-file (getenv "KEYMAP_UPDATE")))
- (unless (and keymap-file
- (file-exists? keymap-file))
- (error "Unable to locate keymap update file"))
-
- (call-with-output-file keymap-file
- (lambda (port)
- (format port model)
- (put-u8 port 0)
-
- (format port layout)
- (put-u8 port 0)
-
- (format port variant)
- (put-u8 port 0)))))
+ "Update kmscon keymap with the provided MODEL, LAYOUT and VARIANT."
+ (and=>
+ (getenv "KEYMAP_UPDATE")
+ (lambda (keymap-file)
+ (unless (file-exists? keymap-file)
+ (error "Unable to locate keymap update file"))
+
+ ;; See file gnu/packages/patches/kmscon-runtime-keymap-switch.patch.
+ ;; This dirty hack makes possible to update kmscon keymap at runtime by
+ ;; writing an X11 keyboard model, layout and variant to a named pipe
+ ;; referred by KEYMAP_UPDATE environment variable.
+ (call-with-output-file keymap-file
+ (lambda (port)
+ (format port model)
+ (put-u8 port 0)
+
+ (format port layout)
+ (put-u8 port 0)
+
+ (format port variant)
+ (put-u8 port 0))))))