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.
This commit is contained in:
Mathieu Othacehe 2018-12-05 21:53:40 +09:00 committed by Ludovic Courtès
parent 7d812901da
commit 479414e1c9
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -149,18 +149,24 @@ (define (layout l)
(values models layouts))))) (values models layouts)))))
(define (kmscon-update-keymap model layout variant) (define (kmscon-update-keymap model layout variant)
(let ((keymap-file (getenv "KEYMAP_UPDATE"))) "Update kmscon keymap with the provided MODEL, LAYOUT and VARIANT."
(unless (and keymap-file (and=>
(file-exists? keymap-file)) (getenv "KEYMAP_UPDATE")
(error "Unable to locate keymap update file")) (lambda (keymap-file)
(unless (file-exists? keymap-file)
(error "Unable to locate keymap update file"))
(call-with-output-file keymap-file ;; See file gnu/packages/patches/kmscon-runtime-keymap-switch.patch.
(lambda (port) ;; This dirty hack makes possible to update kmscon keymap at runtime by
(format port model) ;; writing an X11 keyboard model, layout and variant to a named pipe
(put-u8 port 0) ;; referred by KEYMAP_UPDATE environment variable.
(call-with-output-file keymap-file
(lambda (port)
(format port model)
(put-u8 port 0)
(format port layout) (format port layout)
(put-u8 port 0) (put-u8 port 0)
(format port variant) (format port variant)
(put-u8 port 0))))) (put-u8 port 0))))))