diff --git a/desktop/slock/README b/desktop/slock/README index 7170cbcb86..6ede76c89e 100644 --- a/desktop/slock/README +++ b/desktop/slock/README @@ -1 +1,7 @@ slock is a simple X display locker. + +Build with FAILCOLOR=yes to support upstream failcolor patch: +http://tools.suckless.org/slock/patches/failcolor + +Build with OVERRIDEXFLOCK4=yes to add slock symlink to: +/usr/local/bin/xflock4 diff --git a/desktop/slock/doinst.sh b/desktop/slock/doinst.sh new file mode 100644 index 0000000000..3f9d5d235c --- /dev/null +++ b/desktop/slock/doinst.sh @@ -0,0 +1,3 @@ +# Override xflock4 binary +( cd usr/local/bin ; rm -rf xflock4 ) +( cd usr/local/bin ; ln -sf /usr/bin/slock xflock4 ) diff --git a/desktop/slock/slock-1.2-failcolor.diff b/desktop/slock/slock-1.2-failcolor.diff new file mode 100644 index 0000000000..3b2a03193f --- /dev/null +++ b/desktop/slock/slock-1.2-failcolor.diff @@ -0,0 +1,62 @@ +diff --git a/config.def.h b/config.def.h +index 89e5977..7f55466 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -1,2 +1,3 @@ + #define COLOR1 "black" + #define COLOR2 "#005577" ++#define COLOR3 "#550000" +diff --git a/slock.c b/slock.c +index face75e..8519ce2 100644 +--- a/slock.c ++++ b/slock.c +@@ -29,12 +29,13 @@ typedef struct { + int screen; + Window root, win; + Pixmap pmap; +- unsigned long colors[2]; ++ unsigned long colors[3]; + } Lock; + + static Lock **locks; + static int nscreens; + static Bool running = True; ++static Bool tried = False; + + static void + die(const char *errstr, ...) { +@@ -135,6 +136,7 @@ readpw(Display *dpy, const char *pws) + #ifdef HAVE_BSD_AUTH + running = !auth_userokay(getlogin(), NULL, "auth-xlock", passwd); + #else ++ tried=True; + running = !!strcmp(crypt(passwd, pws), pws); + #endif + if(running) +@@ -162,7 +164,7 @@ readpw(Display *dpy, const char *pws) + } + } else if(llen != 0 && len == 0) { + for(screen = 0; screen < nscreens; screen++) { +- XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[0]); ++ XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[tried ? 2 : 0]); + XClearWindow(dpy, locks[screen]->win); + } + } +@@ -179,7 +181,7 @@ unlockscreen(Display *dpy, Lock *lock) { + return; + + XUngrabPointer(dpy, CurrentTime); +- XFreeColors(dpy, DefaultColormap(dpy, lock->screen), lock->colors, 2, 0); ++ XFreeColors(dpy, DefaultColormap(dpy, lock->screen), lock->colors, 3, 0); + XFreePixmap(dpy, lock->pmap); + XDestroyWindow(dpy, lock->win); + +@@ -212,6 +214,8 @@ lockscreen(Display *dpy, int screen) { + lock->win = XCreateWindow(dpy, lock->root, 0, 0, DisplayWidth(dpy, lock->screen), DisplayHeight(dpy, lock->screen), + 0, DefaultDepth(dpy, lock->screen), CopyFromParent, + DefaultVisual(dpy, lock->screen), CWOverrideRedirect | CWBackPixel, &wa); ++ XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), COLOR3, &color, &dummy); ++ lock->colors[2] = color.pixel; + XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), COLOR2, &color, &dummy); + lock->colors[1] = color.pixel; + XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), COLOR1, &color, &dummy); diff --git a/desktop/slock/slock.SlackBuild b/desktop/slock/slock.SlackBuild index e3e232f5a1..0b51ea5f65 100644 --- a/desktop/slock/slock.SlackBuild +++ b/desktop/slock/slock.SlackBuild @@ -20,6 +20,8 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Modified by Mario Preksavec + PRGNAM=slock VERSION=${VERSION:-1.2} BUILD=${BUILD:-2} @@ -69,6 +71,12 @@ find -L . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; +# Support upstream failcolor patch +# http://tools.suckless.org/slock/patches/failcolor +if [ "${FAILCOLOR:-no}" != "no" ]; then + patch -p1 <$CWD/slock-1.2-failcolor.diff +fi + # This uses our CFLAGS defined above sed "s/@SLACKCFLAGS@/$SLKCFLAGS/" $CWD/config.mk.patch | patch -p1 @@ -91,5 +99,10 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc +# User knows whats at stake +if [ "${OVERRIDEXFLOCK4:-no}" != "no" ]; then + cat $CWD/doinst.sh > $PKG/install/doinst.sh +fi + cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}