From fbcf6a1d7dddaff4c930ec042e3dc8160c685783 Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Tue, 1 Apr 2025 15:28:41 +0800 Subject: [PATCH] services: Add home-keyboard-service-type from RDE. * rosenthal/services/keyboard.scm: New file. --- rosenthal/services/keyboard.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 rosenthal/services/keyboard.scm diff --git a/rosenthal/services/keyboard.scm b/rosenthal/services/keyboard.scm new file mode 100644 index 0000000..fff944b --- /dev/null +++ b/rosenthal/services/keyboard.scm @@ -0,0 +1,28 @@ +;;; SPDX-FileCopyrightText: 2021 Andrew Tropin +;;; +;;; SPDX-License-Identifier: GPL-3.0-or-later + +(define-module (rosenthal services keyboard) + #:use-module (gnu system keyboard) + #:use-module (gnu home services) + #:export (home-keyboard-service-type)) + +(define (set-xkb-variables layout) + (if layout + `(("XKB_DEFAULT_LAYOUT" . ,(keyboard-layout-name layout)) + ("XKB_DEFAULT_VARIANT" . ,(keyboard-layout-variant layout)) + ("XKB_DEFAULT_OPTIONS" . ,(string-join + (keyboard-layout-options layout) ",")) + ("XKB_DEFAULT_MODEL" . ,(keyboard-layout-model layout))) + '())) + +(define home-keyboard-service-type + (service-type (name 'home-keyboard) + (extensions + (list (service-extension + home-environment-variables-service-type + set-xkb-variables))) + (default-value #f) + (description "Set layouts by configuring XKB_* +environment variables. Service accepts an instance of +@code{keyboard-layout} from @code{(gnu system keyboard)}.")))