Subject: [PATCH 20/20] gnu: Add xxkb.

From: Igor Goryachev <[email-masked]>
Date: Thu, 13 Jun 2024 09:17:57 +0300

* gnu/packages/xdisorg.scm (xxkb): New variable.

Change-Id: Ibf7ff3394438490045c1821b9f9e417adc8d5e0b
---
 gnu/packages/xdisorg.scm | 48 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index dc31cedeba..c56db45630 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -62,6 +62,7 @@
 ;;; Copyright © 2023 Hilton Chain <[email-masked]>
 ;;; Copyright © 2022 Mehmet Tekman <[email-masked]>
 ;;; Copyright © 2024 Artyom V. Poptsov <[email-masked]>
+;;; Copyright © 2024 Igor Goryachev <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3804,3 +3805,50 @@ (define-public show-me-the-key
 and works under both Xorg and Wayland (via @code{libinput}), inspired by
 @code{python-screenkey}.")
     (license license:asl2.0)))
+
+(define-public xxkb
+  (package
+    (name "xxkb")
+    (version "1.11.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/xxkb/"
+                           name "-" version "-src.tar.gz"))
+       (sha256
+        (base32
+         "0hl1i38z9xnbgfjkaz04vv1n8xbgfg88g5z8fyzyb2hxv2z37anf"))))
+    (build-system gnu-build-system)
+    (inputs (list libx11
+                  libxext
+                  libxt
+                  libxpm))
+    (native-inputs
+     (list imake))
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((imake (assoc-ref inputs "imake"))
+                   (out   (assoc-ref outputs "out")))
+               (invoke "xmkmf")
+               (substitute* "Makefile"
+                 ((imake) out)
+                 (("(MANPATH = )[[:graph:]]*" _ front)
+                  (string-append front out "/share/man"))
+                 (("XAPPLOADDIR = /etc/X11/app-defaults")
+                  (string-append "XAPPLOADDIR = " out "/lib/X11/app-defaults"))
+                 (("ETCX11DIR = /etc/X11")
+                  (string-append "ETCX11DIR = " out "/etc/X11")))
+               #t))))))
+    (home-page "https://xxkb.sourceforge.net/")
+    (synopsis "Keyboard layout indicator and switcher")
+    (description
+     "The xxkb program is a keyboard layout switcher and indicator.  Unlike
+the programs that reload keyboard maps and use their own hot-keys, xxkb is
+a simple GUI for XKB (X KeyBoard extension) and just sends commands to and
+accepts events from XKB.  That means that it will work with the existing
+setup of your X Server without any modifications.")
+    (license license:artistic2.0)))
-- 
2.45.1