slackbuilds_ponce/desktop/slock/slock-1.2-failcolor.diff
Mario Preksavec 85f5c5f0f3 desktop/slock: Add failcolor diff and optional xflock support
Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
2015-03-29 07:38:41 +07:00

62 lines
2.1 KiB
Diff

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);