commit 61db2484f5c9ab6c66e0252d2d9b89235257ae02
parent bd07f20f6a98964b38cc6adfc92b3be2e61943a0
Author: Max Schillinger <maxschillinger@web.de>
Date: Wed, 21 Sep 2022 20:05:41 +0200
[slock][patch][capscolor] Add patch version compatible with latest commit
Diffstat:
2 files changed, 91 insertions(+), 2 deletions(-)
diff --git a/tools.suckless.org/slock/patches/capscolor/index.md b/tools.suckless.org/slock/patches/capscolor/index.md
@@ -3,15 +3,16 @@ Capscolor
Description
-----------
-Introduces an additional color to indicate the state of Caps Lock. Written
-against HEAD at a31b919, but should apply to 1.2.
+Introduces an additional color to indicate the state of Caps Lock.
Download
--------
* [slock-capscolor.diff](slock-capscolor.diff)
* [slock-capscolor-20170106-2d2a21a.diff](slock-capscolor-20170106-2d2a21a.diff)
+* [slock-capscolor-20220921-35633d4.diff](slock-capscolor-20220921-35633d4.diff)
Authors
-------
* Andrew Hills <ahills@ednos.net>
* Klemens Nanni <kl3@posteo.org> (20170106 version)
+* Max Schillinger <maxschillinger@web.de> (20220921 version)
diff --git a/tools.suckless.org/slock/patches/capscolor/slock-capscolor-20220921-35633d4.diff b/tools.suckless.org/slock/patches/capscolor/slock-capscolor-20220921-35633d4.diff
@@ -0,0 +1,88 @@
+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
+