123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- diff --git a/config.def.h b/config.def.h
- index 9855e21..d01bd38 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 (color) */
- static const int failonclear = 1;
- +
- +/* time in seconds before the monitor shuts down */
- +static const int monitortime = 5;
- diff --git a/slock.c b/slock.c
- index d2f0886..f65a43b 100644
- --- a/slock.c
- +++ b/slock.c
- @@ -15,6 +15,7 @@
- #include <unistd.h>
- #include <sys/types.h>
- #include <X11/extensions/Xrandr.h>
- +#include <X11/extensions/dpms.h>
- #include <X11/keysym.h>
- #include <X11/Xlib.h>
- #include <X11/Xutil.h>
- @@ -306,6 +307,7 @@ main(int argc, char **argv) {
- const char *hash;
- Display *dpy;
- int s, nlocks, nscreens;
- + CARD16 standby, suspend, off;
-
- ARGBEGIN {
- case 'v':
- @@ -366,6 +368,20 @@ main(int argc, char **argv) {
- if (nlocks != nscreens)
- return 1;
-
- + /* DPMS magic to disable the monitor */
- + if (!DPMSCapable(dpy))
- + die("slock: DPMSCapable failed\n");
- + if (!DPMSEnable(dpy))
- + die("slock: DPMSEnable failed\n");
- + if (!DPMSGetTimeouts(dpy, &standby, &suspend, &off))
- + die("slock: DPMSGetTimeouts failed\n");
- + if (!standby || !suspend || !off)
- + die("slock: at least one DPMS variable is zero\n");
- + if (!DPMSSetTimeouts(dpy, monitortime, monitortime, monitortime))
- + die("slock: DPMSSetTimeouts failed\n");
- +
- + XSync(dpy, 0);
- +
- /* run post-lock command */
- if (argc > 0) {
- switch (fork()) {
- @@ -383,5 +399,9 @@ main(int argc, char **argv) {
- /* everything is now blank. Wait for the correct password */
- readpw(dpy, &rr, locks, nscreens, hash);
-
- + /* reset DPMS values to inital ones */
- + DPMSSetTimeouts(dpy, standby, suspend, off);
- + XSync(dpy, 0);
- +
- return 0;
- }
|