1
0
mirror of https://github.com/tiyn/slock.git synced 2025-04-20 08:37:46 +02:00

Compare commits

..

No commits in common. "e738d89c47a9a9d38fd8235b9346d00cffd45aaf" and "72b4407a7b3178292540576feb945c06192d24a0" have entirely different histories.

5 changed files with 10 additions and 139 deletions

View File

@ -7,9 +7,7 @@ This is my patched version of slock. The base version is directly from suckless.
The list below shows the currently applied patches to the master branch. The list below shows the currently applied patches to the master branch.
- slock-background-image-20220318-1c5a538.diff (shows a background image in locked state) - slock-background-image-20220318-1c5a538.diff (shows a background image in locked state)
- slock-capscolor-20220921-35633d4.diff (displays a separate color if caps is set)
- slock-dwmlogo-20210324.diff (adds dwm logo on lock screen) - slock-dwmlogo-20210324.diff (adds dwm logo on lock screen)
- slock-git-20161012-control-clear.diff (doesnt turn logo red when pressing control keys)
## Installation ## Installation

View File

@ -3,10 +3,10 @@ static const char *user = "user";
static const char *group = "nobody"; static const char *group = "nobody";
static const char *colorname[NUMCOLS] = { static const char *colorname[NUMCOLS] = {
[INIT] = "#000000", /* after initialization */ [INIT] = "#2d2d2d", /* after initialization */
[INPUT] = "#0000ff", /* during input */ [BACKGROUND] = "black", /* after initialization */
[FAILED] = "#ff0000", /* wrong password */ [INPUT] = "#005577", /* during input */
[CAPS] = "#ffff00", /* CapsLock on */ [FAILED] = "#CC3333", /* wrong password */
}; };
/* treat a cleared input like a wrong password (color) */ /* treat a cleared input like a wrong password (color) */
@ -32,6 +32,3 @@ static XRectangle rectangles[9] = {
{ 11, 4, 1, 2 }, { 11, 4, 1, 2 },
}; };
/* allow control key to trigger fail on clear */
static const int controlkeyclear = 1;

View File

@ -1,88 +0,0 @@
From da1721b1b4bb0aa8f94537ddd2a3eada1df00a30 Mon Sep 17 00:00:00 2001
From: Max Schillinger <maxschillinger@web.de>
Date: Wed, 21 Sep 2022 19:56:58 +0200
Subject: [PATCH] Update capscolor patch to match the latest slock commit
(35633d4)
---
config.def.h | 1 +
slock.c | 15 ++++++++++++---
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/config.def.h b/config.def.h
index 9855e21..6288856 100644
--- a/config.def.h
+++ b/config.def.h
@@ -6,6 +6,7 @@ static const char *colorname[NUMCOLS] = {
[INIT] = "black", /* after initialization */
[INPUT] = "#005577", /* during input */
[FAILED] = "#CC3333", /* wrong password */
+ [CAPS] = "red", /* CapsLock on */
};
/* treat a cleared input like a wrong password (color) */
diff --git a/slock.c b/slock.c
index 5ae738c..5f4fb7a 100644
--- a/slock.c
+++ b/slock.c
@@ -18,6 +18,7 @@
#include <X11/keysym.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
+#include <X11/XKBlib.h>
#include "arg.h"
#include "util.h"
@@ -28,6 +29,7 @@ enum {
INIT,
INPUT,
FAILED,
+ CAPS,
NUMCOLS
};
@@ -130,16 +132,20 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
{
XRRScreenChangeNotifyEvent *rre;
char buf[32], passwd[256], *inputhash;
- int num, screen, running, failure, oldc;
- unsigned int len, color;
+ int caps, num, screen, running, failure, oldc;
+ unsigned int len, color, indicators;
KeySym ksym;
XEvent ev;
len = 0;
+ caps = 0;
running = 1;
failure = 0;
oldc = INIT;
+ if (!XkbGetIndicatorState(dpy, XkbUseCoreKbd, &indicators))
+ caps = indicators & 1;
+
while (running && !XNextEvent(dpy, &ev)) {
if (ev.type == KeyPress) {
explicit_bzero(&buf, sizeof(buf));
@@ -179,6 +185,9 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
if (len)
passwd[--len] = '\0';
break;
+ case XK_Caps_Lock:
+ caps = !caps;
+ break;
default:
if (num && !iscntrl((int)buf[0]) &&
(len + num < sizeof(passwd))) {
@@ -187,7 +196,7 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
}
break;
}
- color = len ? INPUT : ((failure || failonclear) ? FAILED : INIT);
+ color = len ? (caps ? CAPS : INPUT) : (failure || failonclear ? FAILED : INIT);
if (running && oldc != color) {
for (screen = 0; screen < nscreens; screen++) {
XSetWindowBackground(dpy,
--
2.37.3

View File

@ -1,27 +0,0 @@
diff --git a/config.def.h b/config.def.h
index 6fba2b6..933152b 100644
--- a/config.def.h
+++ b/config.def.h
@@ -10,3 +10,6 @@ static const char *colorname[NUMCOLS] = {
/* treat a cleared input like a wrong password */
static const int failonclear = 1;
+
+/* allow control key to trigger fail on clear */
+static const int controlkeyclear = 0;
diff --git a/slock.c b/slock.c
index 4d7f06f..15552ef 100644
--- a/slock.c
+++ b/slock.c
@@ -180,8 +180,9 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
passwd[len--] = '\0';
break;
default:
- if (num && !iscntrl((int)buf[0]) &&
- (len + num < sizeof(passwd))) {
+ if (controlkeyclear && iscntrl((int)buf[0]))
+ continue;
+ if (num && (len + num < sizeof(passwd))) {
memcpy(passwd + len, buf, num);
len += num;
}

21
slock.c
View File

@ -24,7 +24,6 @@
#include <X11/Xutil.h> #include <X11/Xutil.h>
#include <Imlib2.h> #include <Imlib2.h>
#include <X11/Xft/Xft.h> #include <X11/Xft/Xft.h>
#include <X11/XKBlib.h>
#include "arg.h" #include "arg.h"
#include "util.h" #include "util.h"
@ -32,10 +31,10 @@
char *argv0; char *argv0;
enum { enum {
BACKGROUND,
INIT, INIT,
INPUT, INPUT,
FAILED, FAILED,
CAPS,
NUMCOLS NUMCOLS
}; };
@ -168,20 +167,16 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
{ {
XRRScreenChangeNotifyEvent *rre; XRRScreenChangeNotifyEvent *rre;
char buf[32], passwd[256], *inputhash; char buf[32], passwd[256], *inputhash;
int caps, num, screen, running, failure, oldc; int num, screen, running, failure, oldc;
unsigned int len, color, indicators; unsigned int len, color;
KeySym ksym; KeySym ksym;
XEvent ev; XEvent ev;
len = 0; len = 0;
caps = 0;
running = 1; running = 1;
failure = 0; failure = 0;
oldc = INIT; oldc = INIT;
if (!XkbGetIndicatorState(dpy, XkbUseCoreKbd, &indicators))
caps = indicators & 1;
while (running && !XNextEvent(dpy, &ev)) { while (running && !XNextEvent(dpy, &ev)) {
if (ev.type == KeyPress) { if (ev.type == KeyPress) {
explicit_bzero(&buf, sizeof(buf)); explicit_bzero(&buf, sizeof(buf));
@ -221,19 +216,15 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
if (len) if (len)
passwd[--len] = '\0'; passwd[--len] = '\0';
break; break;
case XK_Caps_Lock:
caps = !caps;
break;
default: default:
if (controlkeyclear && iscntrl((int)buf[0])) if (num && !iscntrl((int)buf[0]) &&
continue; (len + num < sizeof(passwd))) {
if (num && (len + num < sizeof(passwd))) {
memcpy(passwd + len, buf, num); memcpy(passwd + len, buf, num);
len += num; len += num;
} }
break; break;
} }
color = len ? (caps ? CAPS : INPUT) : (failure || failonclear ? FAILED : INIT); color = len ? INPUT : ((failure || failonclear) ? FAILED : INIT);
if (running && oldc != color) { if (running && oldc != color) {
for (screen = 0; screen < nscreens; screen++) { for (screen = 0; screen < nscreens; screen++) {
if (locks[screen]->bgmap) if (locks[screen]->bgmap)