Introduction
Introduction Statistics Contact Development Disclaimer Help
slock-auto-timeout-20221002-35633d4.diff - sites - public wiki contents of suck…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
slock-auto-timeout-20221002-35633d4.diff (1932B)
---
1 diff --git a/config.def.h b/config.def.h
2 index 9855e21..354980b 100644
3 --- a/config.def.h
4 +++ b/config.def.h
5 @@ -10,3 +10,12 @@ static const char *colorname[NUMCOLS] = {
6
7 /* treat a cleared input like a wrong password (color) */
8 static const int failonclear = 1;
9 +
10 +/* length of time (seconds) until [command] is executed */
11 +static const int timeoffset = 60;
12 +
13 +/* should [command] be run only once? */
14 +static const int runonce = 0;
15 +
16 +/* command to be run after [timeoffset] seconds has passed */
17 +static const char *command = "doas poweroff";
18 diff --git a/slock.c b/slock.c
19 index 5ae738c..7644bd9 100644
20 --- a/slock.c
21 +++ b/slock.c
22 @@ -19,11 +19,16 @@
23 #include <X11/Xlib.h>
24 #include <X11/Xutil.h>
25
26 +#include <time.h>
27 +
28 #include "arg.h"
29 #include "util.h"
30
31 char *argv0;
32
33 +time_t lasttouched;
34 +int runflag = 0;
35 +
36 enum {
37 INIT,
38 INPUT,
39 @@ -140,7 +145,9 @@ readpw(Display *dpy, struct xrandr *rr, struct lock …
40 failure = 0;
41 oldc = INIT;
42
43 - while (running && !XNextEvent(dpy, &ev)) {
44 + while (running) {
45 + while (XPending(dpy)) {
46 + XNextEvent(dpy, &ev);
47 if (ev.type == KeyPress) {
48 explicit_bzero(&buf, sizeof(buf));
49 num = XLookupString(&ev.xkey, buf, sizeof(buf),…
50 @@ -217,6 +224,17 @@ readpw(Display *dpy, struct xrandr *rr, struct lock…
51 XRaiseWindow(dpy, locks[screen]->wi…
52 }
53 }
54 +
55 + time_t currenttime;
56 + time(&currenttime);
57 +
58 + if (currenttime >= lasttouched + timeoffset){
59 + if (!runonce || !runflag){
60 + runflag = 1;
61 + system(command);
62 + }
63 + }
64 + }
65 }
66
67 static struct lock *
68 @@ -229,6 +247,8 @@ lockscreen(Display *dpy, struct xrandr *rr, int scre…
69 XSetWindowAttributes wa;
70 Cursor invisible;
71
72 + time(&lasttouched);
73 +
74 if (dpy == NULL || screen < 0 || !(lock = malloc(sizeof(struct …
75 return NULL;
76
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.