New version appended. i3lock-fancy needs some fixes, but I can confirm that i3lock-color works! ng0 transcribed 12K bytes: > Hi Chris, > > thanks for your input. I think I was just stuck by too many > repetive attempts. Thanks for a fresh view :) > I'll send applied changes as soon as I can (probably next week). > > Chris Marusich transcribed 11K bytes: > > writes: > > > > > I have no idea about the error of i3lock-fancy (password is not > > > accepted). An commented phase in i3lock-color is still included where > > > I tried to fix this, but I don't know much about PAM at this point. > > > > When I checked using "guix system vm", the reason i3lock refused to > > accept the password was because it could not read /etc/shadow. One > > solution to this problem is to do both of the following: > > > > 1) Do not wrap i3lock in a wrapper script. > > > > 2) Install the i3lock executable as setuid-root. > > Oh, 2 was what I was thinking of that might fix > it. I just had no time to test it. > > > When installing i3lock as a setuid-root program, it is important not to > > wrap it in a script. It is common in UNIX-like systems to ignore the > > setuid bit when the program is an interpreted script instead of an > > executable (a simple Internet search for a phrase like "setuid bash > > script" will provide lots of supporting information about this). If you > > do (2) without also removing the wrapping logic that you put into the > > package definition, you will find that i3lock still rejects your > > password - this is because it still can't read /etc/shadow. > > > > The attached patch is a revised version of your first patch to add > > i3lock-color. I have basically just removed the wrapping phase. To > > install it setuid-root along with an appropriate PAM configuration file, > > just add a screen-locker service like the following to your services in > > your operating system declaration: > > > > (screen-locker-service i3lock-color "i3lock") > > > > Note that this will create an appropriate PAM configuration file at > > /etc/pam.d/i3lock, so you don't need to bother messing around with the > > PAM configuration file that comes with i3lock-color. > > > > I haven't looked at the fancy version yet. I'll check it out when I get > > a little more time. > > The fancy version is basically a fork with some more fancy visual elements. > It should be similar. > > > > + %D%/packages/patches/hypre-doc-tables.patch \ > > > + %D%/packages/patches/hypre-ldflags.patch \ > > > > Did you intend to include these in the patch? They aren't used, so I've > > removed them in my version of the patch. > > Many weeks ago, I don't know what happened there. > Maybe a mistake in rebase. > > > > +--- > > > + Makefile | 7 +------ > > > + 1 file changed, 1 insertion(+), 6 deletions(-) > > > + > > > +diff --git a/Makefile b/Makefile > > > +index c0fe888..b4b6cd9 100644 > > > +--- a/Makefile > > > ++++ b/Makefile > > > +@@ -6,11 +6,6 @@ SYSCONFDIR=/etc > > > + PKG_CONFIG=pkg-config > > > + MANDIR=/usr/share/man > > > + > > > +-# Check if pkg-config is installed, we need it for building CFLAGS/LIBS > > > +-ifeq ($(shell which $(PKG_CONFIG) 2>/dev/null 1>/dev/null || echo 1),1) > > > +-$(error "$(PKG_CONFIG) was not found") > > > +-endif > > > +- > > > + CFLAGS += -std=c99 > > > + CFLAGS += -pipe > > > + CFLAGS += -Wall > > > +@@ -18,7 +13,7 @@ CFLAGS += -O2 > > > + SIMD_CFLAGS += -funroll-loops > > > + SIMD_CFLAGS += -msse2 > > > + CPPFLAGS += -D_GNU_SOURCE > > > +-CPPFLAGS += -DXKBCOMPOSE=$(shell if test -e /usr/include/xkbcommon/xkbcommon-compose.h ; then echo 1 ; else echo 0 ; fi ) > > > ++CPPFLAGS += -DXKBCOMPOSE=1 > > > + CFLAGS += $(shell $(PKG_CONFIG) --cflags cairo xcb-composite xcb-xinerama xcb-atom xcb-image xcb-xkb xkbcommon xkbcommon-x11) > > > + LIBS += $(shell $(PKG_CONFIG) --libs cairo xcb-composite xcb-xinerama xcb-atom xcb-image xcb-xkb xkbcommon xkbcommon-x11) > > > + LIBS += -lpam > > > +-- > > > +2.13.0 > > > > FYI, it looks like maybe we could probably remove this patch file > > entirely, and just use substitute* to modify the Makefile, if we > > provided the "which" program as an input. Specifically, if the which > > program were present, then probably the check you removed would > > succeed. I haven't tried it myself, though. > > Okay, I will give it a try. > > > > -;;; Copyright (c) 2016, 2017 ng0 > > > +;;; Copyright (c) 2016, 2017 ng0 > > > > FYI, the contact.ng0@cryptolab.net email address is still mentioned in > > multiple other files, too. > > Yes. I'm only changing addresses once I touch the file. So old > addresses might be in there for a long time. Otoh, I will > prepare a patch and change all my header addresses. > > > > + (description > > > + "I3lock-color is a screen locker. It is a 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 PNG image to be displayed in the lock screen > > > +@item many additional color options > > > +@end enumerate\n") > > > > I'm not sure if the trailing newline is necessary. Unless you beat me > > to it, I'll check on this detail the next time I return to this thread. > > I've seen this multiple times before and have just followed this style. > > > -- > > Chris > > > From 53edb9d43966ec9fbea8292608875d0c894adaea Mon Sep 17 00:00:00 2001 > > From: ng0 > > Date: Fri, 17 Nov 2017 01:38:14 -0800 > > Subject: [PATCH] gnu: Add i3lock-color. > > > > * gnu/local.mk (dist_patch_DATA): Add i3lock-color-fix-makefile.patch. > > * gnu/packages/patches/i3lock-color-fix-makefile.patch: New file. > > * gnu/packages/wm.scm: Add i3lock-color. > > > > Signed-off-by: Chris Marusich > > --- > > gnu/local.mk | 1 + > > .../patches/i3lock-color-fix-makefile.patch | 38 +++++++++++++ > > gnu/packages/wm.scm | 66 ++++++++++++++++++++++ > > 3 files changed, 105 insertions(+) > > create mode 100644 gnu/packages/patches/i3lock-color-fix-makefile.patch > > > > diff --git a/gnu/local.mk b/gnu/local.mk > > index 61bebe662..575d88506 100644 > > --- a/gnu/local.mk > > +++ b/gnu/local.mk > > @@ -738,6 +738,7 @@ dist_patch_DATA = \ > > %D%/packages/patches/hubbub-sort-entities.patch \ > > %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ > > %D%/packages/patches/hydra-disable-darcs-test.patch \ > > + %D%/packages/patches/i3lock-color-fix-makefile.patch \ > > %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ > > %D%/packages/patches/icu4c-CVE-2017-7867-CVE-2017-7868.patch \ > > %D%/packages/patches/icu4c-CVE-2017-14952.patch \ > > diff --git a/gnu/packages/patches/i3lock-color-fix-makefile.patch b/gnu/packages/patches/i3lock-color-fix-makefile.patch > > new file mode 100644 > > index 000000000..8243dc548 > > --- /dev/null > > +++ b/gnu/packages/patches/i3lock-color-fix-makefile.patch > > @@ -0,0 +1,38 @@ > > +From eaca36ed78bafb82bd51a9e83c6445ef8f1698c8 Mon Sep 17 00:00:00 2001 > > +From: ng0 > > +Date: Mon, 22 May 2017 18:22:19 +0000 > > +Subject: [PATCH] This fix to the Makefile is required to make i3lock-color > > + build on Guix. > > + > > +--- > > + Makefile | 7 +------ > > + 1 file changed, 1 insertion(+), 6 deletions(-) > > + > > +diff --git a/Makefile b/Makefile > > +index c0fe888..b4b6cd9 100644 > > +--- a/Makefile > > ++++ b/Makefile > > +@@ -6,11 +6,6 @@ SYSCONFDIR=/etc > > + PKG_CONFIG=pkg-config > > + MANDIR=/usr/share/man > > + > > +-# Check if pkg-config is installed, we need it for building CFLAGS/LIBS > > +-ifeq ($(shell which $(PKG_CONFIG) 2>/dev/null 1>/dev/null || echo 1),1) > > +-$(error "$(PKG_CONFIG) was not found") > > +-endif > > +- > > + CFLAGS += -std=c99 > > + CFLAGS += -pipe > > + CFLAGS += -Wall > > +@@ -18,7 +13,7 @@ CFLAGS += -O2 > > + SIMD_CFLAGS += -funroll-loops > > + SIMD_CFLAGS += -msse2 > > + CPPFLAGS += -D_GNU_SOURCE > > +-CPPFLAGS += -DXKBCOMPOSE=$(shell if test -e /usr/include/xkbcommon/xkbcommon-compose.h ; then echo 1 ; else echo 0 ; fi ) > > ++CPPFLAGS += -DXKBCOMPOSE=1 > > + CFLAGS += $(shell $(PKG_CONFIG) --cflags cairo xcb-composite xcb-xinerama xcb-atom xcb-image xcb-xkb xkbcommon xkbcommon-x11) > > + LIBS += $(shell $(PKG_CONFIG) --libs cairo xcb-composite xcb-xinerama xcb-atom xcb-image xcb-xkb xkbcommon xkbcommon-x11) > > + LIBS += -lpam > > +-- > > +2.13.0 > > + > > diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm > > index 09c10eaa0..3d5a0ef7a 100644 > > --- a/gnu/packages/wm.scm > > +++ b/gnu/packages/wm.scm > > @@ -66,6 +66,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)) > > @@ -333,6 +334,71 @@ and locate windows on all your workspaces, using an interactive dmenu > > prompt.") > > (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))) > > > > +;; The last release is from 2015, use the git commit. > > +(define-public i3lock-color > > + (let ((commit "275ff68f6a6b7985c65fbaac537f4c018b47942f") > > + (revision "1")) > > + (package > > + (name "i3lock-color") > > + (version (string-append "2.8-" revision "." (string-take commit 7))) > > + (source > > + (origin > > + (method git-fetch) > > + (uri (git-reference > > + (url "https://github.com/chrjguill/i3lock-color") > > + (commit commit))) > > + (file-name (string-append name "-" version "-checkout")) > > + (snippet > > + ;; The Makefile is read-only, we are going to patch it. > > + '(chmod "Makefile" #o755)) > > + (patches (search-patches "i3lock-color-fix-makefile.patch")) > > + (sha256 > > + (base32 > > + "1qhxqj1gwmf473b4b1bfqxdxiw1y6gq9rf97d77jc9s9z267fjm5")))) > > + (build-system gnu-build-system) > > + (arguments > > + `(#:tests? #f ; No tests included. > > + #:make-flags (list "CC=gcc") > > + #:phases > > + (modify-phases %standard-phases > > + (replace 'configure > > + (lambda* (#:key outputs #:allow-other-keys) > > + (let* ((out (assoc-ref outputs "out")) > > + (man (string-append out "/share/man")) > > + (etc (string-append out "/etc"))) > > + (substitute* "Makefile" > > + (("PREFIX=/usr") > > + (string-append "PREFIX=" out)) > > + (("SYSCONFDIR=/etc") > > + (string-append "SYSCONFDIR=" etc)) > > + (("MANDIR=/usr/share/man") > > + (string-append "MANDIR=" man))) > > + #t)))))) > > + (inputs > > + `(("xcb-util-image" ,xcb-util-image) > > + ("xcb-util-keysyms" ,xcb-util-keysyms) > > + ("xcb-util" ,xcb-util) > > + ("libxcb" ,libxcb) > > + ("linux-pam" ,linux-pam) > > + ("libev" ,libev) > > + ("libx11" ,libx11) > > + ("cairo" ,cairo))) > > + (native-inputs > > + `(("libxkbcommon" ,libxkbcommon) > > + ("pkg-config" ,pkg-config))) > > + (home-page "https://github.com/chrjguill/i3lock-color") > > + (synopsis "Screenlocker with color configuration support") > > + (description > > + "I3lock-color is a screen locker. It is a 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 PNG image to be displayed in the lock screen > > +@item many additional color options > > +@end enumerate\n") > > + (license license:bsd-3)))) > > + > > (define-public xmonad > > (package > > (name "xmonad") > > -- > > 2.14.2 > > > > > > > -- > GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588 > GnuPG: https://dl.n0.is/dist/keys/ > WWW: https://we.make.ritual.n0.is -- GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588 GnuPG: https://dl.n0.is/dist/keys/ WWW: https://we.make.ritual.n0.is