Subject: Re: [bug#27083] screen-lockers: i3lock-color and i3lock-fancy

From: ng0 <[email-masked]>
Date: Sat, 9 Dec 2017 13:25:38 +0000

Chris Marusich transcribed 4.6K bytes:
> ng0 <[email-masked]> writes:
> 
> > Hi Chris,
> >
> > thanks for your review. I'll have no time to address it before next week,
> > just a couple of comments.
> 
> No worries!  Whenever you can update it, that's great!  We're almost
> there; I think the next update will probably be the final one.
> 

New version, I think I've addressed everything you mentioned.
Furthermore I was able to improve the files due to some
changes upstream made.
I've fixed the description of i3lock-fancy and I've opened
a discussion/bugticket on the name of the executable of i3lock-fancy
(in https://github.com/meskarune/i3lock-fancy/issues/103).

Beyond this patch:
I wonder if it is a bug or lack of functionality in i3lock
or i3lock-color that I can switch to the tty when it's locked.
There are other screenlockers that do not allow me to do this,
the screen is really locked, not just tty7 or whereever your X might
be running.

I have not tested this version of the patches beyond building them.
I will do so after sending this and report later today if
I can still lock my screen. it should just work.
-- 
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://c.n0.is/ng0_pubkeys/tree/keys
  WWW: https://n0.is
From f11bc2af6aa43cdd52c76c8640fc2d8eff71fa8d Mon Sep 17 00:00:00 2001
From: ng0 <[email-masked]>
Date: Tue, 24 Jan 2017 13:03:42 +0000
Subject: [PATCH 1/2] gnu: Add i3lock-color.

* gnu/packages/wm.scm (i3lock-color): New variable.
---
 gnu/packages/wm.scm | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 6912d6f2d..8fcce1eab 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016 Al McElrath <[email-masked]>
 ;;; Copyright © 2016 Carlo Zancanaro <[email-masked]>
 ;;; Copyright © 2016 Ludovic Courtès <[email-masked]>
-;;; Copyright © 2016, 2017 ng0 <[email-masked]>
+;;; Copyright © 2016, 2017 ng0 <[email-masked]>
 ;;; Copyright © 2016 doncatnip <[email-masked]>
 ;;; Copyright © 2016 Ivan Vilata i Balaguer <[email-masked]>
 ;;; Copyright © 2017 Mekeor Melire <[email-masked]>
@@ -44,6 +44,7 @@
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages perl)
@@ -68,6 +69,7 @@
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages lua)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages suckless)
   #:use-module (guix download)
   #:use-module (guix git-download))
@@ -335,6 +337,52 @@ and locate windows on all your workspaces, using an interactive dmenu
 prompt.")
       (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/")))))
 
+(define-public i3lock-color
+  (package
+    (name "i3lock-color")
+    (version "2.10.1c")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/PandorasFox/i3lock-color/"
+                           "archive/" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "119xvdm4r6irqk0mar80hx6s8ydw26y35h7712rd7nbg7pb7i053"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;No tests included.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _
+             (zero? (system* "autoreconf" "-vfi")))))))
+    (inputs
+     `(("xcb-util-image" ,xcb-util-image)
+       ("xcb-util" ,xcb-util)
+       ("libxcb" ,libxcb)
+       ("linux-pam" ,linux-pam)
+       ("libxkbcommon" ,libxkbcommon)
+       ("libev" ,libev)
+       ("cairo" ,cairo)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("autoconf" ,autoconf)
+        ("automake" ,automake)))
+    (home-page "https://github.com/PandorasFox/i3lock-color")
+    (synopsis "Screen locker with color configuration support")
+    (description
+     "Re-patched version of i3lock, which is a simple screen
+locker like slock.  Features include:
+
+@enumerate
+@item forking process, the locked screen is preserved when you suspend from RAM
+@item specify background color or image to be displayed in the lock screen
+@item many additional color options
+@end enumerate")
+    (license license:bsd-3)))
+
 (define-public xmonad
   (package
     (name "xmonad")
-- 
2.15.1

From 9ea21f2e1c20aceff4ff12bf00cd5b31e0bf02fc Mon Sep 17 00:00:00 2001
From: ng0 <[email-masked]>
Date: Tue, 24 Jan 2017 15:57:13 +0000
Subject: [PATCH 2/2] gnu: Add i3lock-fancy.

* gnu/packages/wm.scm (i3lock-fancy): New variable.
---
 gnu/packages/wm.scm | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 8fcce1eab..d9732e8d0 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -45,6 +45,7 @@
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages gawk)
   #:use-module (gnu packages base)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages perl)
@@ -383,6 +384,72 @@ locker like slock.  Features include:
 @end enumerate")
     (license license:bsd-3)))
 
+(define-public i3lock-fancy
+  (package
+    (name "i3lock-fancy")
+    (version "0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/meskarune/i3lock-fancy/archive/"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "020m7mnfq5cvir7p9v3hkb7cvb4cai33wppxl2zdwscwwjnchc5y"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;No tests included
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (icons (string-append out "/share/i3lock-fancy/icons/"))
+                    (wmctrl (string-append (assoc-ref inputs "wmctrl")
+                                           "/bin/wmctrl"))
+                    (mconvert (string-append (assoc-ref inputs "imagemagick")
+                                             "/bin/convert"))
+                    (mimport (string-append (assoc-ref inputs "imagemagick")
+                                            "/bin/import"))
+                    (awk (string-append (assoc-ref inputs "gawk")
+                                        "/bin/gawk")))
+
+               (substitute* "lock"
+                 (("$(which wmctrl)") wmctrl)
+                 (("convert") mconvert)
+                 (("shot=\\(import") (string-append "shot=\(" mimport))
+                 (("awk -F") (string-append awk " -F"))
+                 ((" awk") awk)
+                 (("\\$scriptpath/icons/") icons))
+               #t)))
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (icons (string-append out "/share/i3lock-fancy/icons/")))
+
+               (install-file "lock" bin)
+               (rename-file (string-append bin "/lock")
+                            (string-append bin "/i3lock-fancy"))
+               (copy-recursively "icons" icons)
+               #t))))))
+    (native-inputs
+     `(("imagemagick" ,imagemagick)
+       ("wmctrl" ,wmctrl)
+       ("gawk" ,gawk)))
+    (home-page "https://github.com/meskarune/i3lock-fancy")
+    (synopsis "Screen locker with screenshot function")
+    (description
+     "@code{i3lock-fancy} is a Bash script that takes a screenshot of
+the desktop, blurs the background and adds a lock icon and text.
+It requires @code{i3lock-color} or @code{i3lock} and can optionally
+be passed any screenshot util like @code{scrot}.
+This screen locker can be used with any window manager or
+desktop environment.")
+    (license license:expat)))
+
 (define-public xmonad
   (package
     (name "xmonad")
-- 
2.15.1