Subject: Re: bug#58356: [PATCH] Add xtrlock

From: Mehmet Tekman <[email-masked]>
Date: Tue, 11 Oct 2022 13:27:54 +0200

I've just noticed that though the package builds without the CFLAGS,
it doesn't work well in context to the shadow file.
I've reincluded it in this next patch (diff from master).

Best,
Mehmet
From aced8b924a194495233b0698f2185b9b80d10963 Mon Sep 17 00:00:00 2001
From: Mehmet Tekman <[email-masked]>
Date: Tue, 11 Oct 2022 12:38:13 +0200
Subject: [PATCH] gnu: Add xtrlock.

* gnu/packages/xdisorg.scm (xtrlock): New variable.
---
 gnu/packages/xdisorg.scm | 49 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 9908f29191..fc25c14ea7 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -56,6 +56,7 @@
 ;;; Copyright © 2022 Jai Vetrivelan <[email-masked]>
 ;;; Copyright © 2022 Derek Chuank <[email-masked]>
 ;;; Copyright © 2022 Wamm K. D. <[email-masked]>
+;;; Copyright © 2022 Mehmet Tekman <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1099,6 +1100,54 @@ (define-public xlockmore
     (license (license:non-copyleft #f "See xlock.c.")
              ))) ; + GPLv2 in modes/glx/biof.c.
 
+(define-public xtrlock
+  (package
+    (name "xtrlock")
+    (version "2.15")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://debian/pool/main/x/xtrlock/xtrlock_" version
+                    ".tar.xz"))
+              (sha256
+               (base32
+                "0mgpysbvipd5h6x6zz4hng6b13gp3qjnpgny3azyj8k8dv85bppw"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; LDLIBS are required for the package to build.
+     ;; CFLAGS are required for it to use the shadow file, and to
+     ;; be compatible with multi-touch devices.
+     '(#:make-flags (list "CFLAGS=-Wall -DSHADOW_PWD -DMULTITOUCH"
+                          "LDLIBS=-lX11 -lcrypt -lXi")
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  (delete 'check)
+                  (add-after 'unpack 'rename-makefile
+                    (lambda _
+                      (rename-file "Makefile.noimake" "Makefile")
+                      (rename-file "xtrlock.man" "xtrlock.1")))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out")))
+                        (install-file "xtrlock"
+                                      (string-append out "/bin/"))
+                        (install-file "xtrlock.1"
+                                      (string-append out "/share/man/man1/"))))))))
+    (inputs (list libx11 libxi libxfixes))
+    (home-page "https://packages.debian.org/sid/xtrlock")
+    (synopsis "Minimal X display lock program")
+    (description
+     "xtrlock locks the X server till the user enters their password at the
+keyboard.  While xtrlock is running, the mouse and keyboard are grabbed and
+the mouse cursor becomes a padlock.  Output displayed by X programs, and
+windows put up by new X clients, continue to be visible, and any new output is
+displayed normally.  The mouse and keyboard are returned when the user types
+their password, followed by Enter or Newline.  If an incorrect password is
+entered the bell is sounded.  Pressing Backspace or Delete erases one
+character of a password partially typed; pressing Escape or Clear clears
+anything that has been entered.")
+    (license license:gpl3+)))
+
 (define-public xosd
   (package
     (name "xosd")
-- 
2.38.0