slock

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 7dc450118fbc31a3a04568f814392870d616a615
parent d7b259be346091fad33ce27b155586c8d96bc615
Author: bakkeby <bakkeby@gmail.com>
Date:   Thu,  9 Sep 2021 10:17:00 +0200

Adding failure-command patch

Diffstat:
MREADME.md | 5+++++
Mconfig.def.h | 9+++++++++
Mpatches.def.h | 5+++++
Mslock.c | 10++++++++++
4 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md @@ -26,6 +26,8 @@ slock tool, how to install it and how it works. ### Changelog: +2021-09-09 - Added the failure-command patch + 2021-06-08 - Added the color message patch 2020-08-03 - Added alpha, keypress_feedback and blur_pixelated_screen patches @@ -64,6 +66,9 @@ slock tool, how to install it and how it works. - the monitor will automatically be activated by pressing a key or moving the mouse and the password can be entered then + - [failure-command](https://tools.suckless.org/slock/patches/failure-command/) + - allows for a command to be run after a specified number of incorrect attempts + - [keypress_feedback](https://tools.suckless.org/slock/patches/keypress-feedback/) - draws random blocks on the screen to display keypress feedback diff --git a/config.def.h b/config.def.h @@ -56,6 +56,15 @@ static const float alpha = 0.9; /* treat a cleared input like a wrong password (color) */ static const int failonclear = 1; +#if FAILURE_COMMAND_PATCH +/* number of failed password attempts until failcommand is executed. + Set to 0 to disable */ +static const int failcount = 0; + +/* command to be executed after [failcount] failed password attempts */ +static const char *failcommand = "shutdown"; +#endif // FAILURE_COMMAND_PATCH + #if BLUR_PIXELATED_SCREEN_PATCH /* Enable blur */ #define BLUR diff --git a/patches.def.h b/patches.def.h @@ -60,6 +60,11 @@ */ #define DPMS_PATCH 0 +/* This patch allows for a command to be run after a specified number of incorrect attempts. + * https://tools.suckless.org/slock/patches/failure-command/ + */ +#define FAILURE_COMMAND_PATCH 0 + /* Draws random blocks on the screen to display keypress feedback. * https://tools.suckless.org/slock/patches/keypress-feedback/ * https://patch-diff.githubusercontent.com/raw/phenax/bslock/pull/2.diff diff --git a/slock.c b/slock.c @@ -43,6 +43,9 @@ #include "util.h" char *argv0; +#if FAILURE_COMMAND_PATCH +int failtrack = 0; +#endif // FAILURE_COMMAND_PATCH #if QUICKCANCEL_PATCH static time_t locktime; @@ -272,6 +275,13 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, if (running) { XBell(dpy, 100); failure = 1; + #if FAILURE_COMMAND_PATCH + failtrack++; + + if (failtrack >= failcount && failcount != 0) { + system(failcommand); + } + #endif // FAILURE_COMMAND_PATCH } explicit_bzero(&passwd, sizeof(passwd)); len = 0;