Introduction
Introduction Statistics Contact Development Disclaimer Help
xssstate.c - xssstate - a simple utility to get the X screensaver state
git clone git://git.suckless.org/xssstate
Log
Files
Refs
README
LICENSE
---
xssstate.c (1786B)
---
1 /*
2 * See LICENSE file for copyright and license details.
3 */
4
5 #include <unistd.h>
6 #include <stdlib.h>
7 #include <stdio.h>
8 #include <stdarg.h>
9 #include <stdbool.h>
10 #include <libgen.h>
11 #include <X11/extensions/scrnsaver.h>
12
13 #include "arg.h"
14
15 char *argv0;
16
17 void
18 die(const char *errstr, ...) {
19 va_list ap;
20
21 va_start(ap, errstr);
22 vfprintf(stderr, errstr, ap);
23 va_end(ap);
24 exit(EXIT_FAILURE);
25 }
26
27 void
28 usage(void)
29 {
30 die("usage: %s [-istv]\n", basename(argv0));
31 }
32
33 int
34 main(int argc, char *argv[]) {
35 XScreenSaverInfo *info;
36 Display *dpy;
37 int base, errbase;
38 Bool showstate, showtill, showidle;
39
40 showstate = false;
41 showtill = false;
42 showidle = false;
43
44 ARGBEGIN {
45 case 'i':
46 showidle = true;
47 break;
48 case 's':
49 showstate = true;
50 break;
51 case 't':
52 showtill = true;
53 break;
54 case 'v':
55 die("xssstate-"VERSION", © 2008-2016 xssstate engineers"
56 ", see LICENSE for details.\n");
57 default:
58 usage();
59 } ARGEND;
60
61 if (!showstate && !showtill && !showidle)
62 usage();
63
64 if (!(dpy = XOpenDisplay(0)))
65 die("Cannot open display.\n");
66
67 if (!XScreenSaverQueryExtension(dpy, &base, &errbase))
68 die("Screensaver extension not activated.\n");
69
70 info = XScreenSaverAllocInfo();
71 XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), info);
72
73 if (showstate) {
74 switch(info->state) {
75 case ScreenSaverOn:
76 printf("on\n");
77 break;
78 case ScreenSaverOff:
79 printf("off\n");
80 break;
81 case ScreenSaverDisabled:
82 printf("disabled\n");
83 break;
84 }
85 } else if (showtill) {
86 switch(info->state) {
87 case ScreenSaverOn:
88 printf("0\n");
89 break;
90 case ScreenSaverOff:
91 printf("%lu\n", info->til_or_since);
92 break;
93 case ScreenSaverDisabled:
94 printf("-1\n");
95 break;
96 }
97 } else if (showidle) {
98 printf("%lu\n", info->idle);
99 }
100
101
102 XCloseDisplay(dpy);
103
104 return 0;
105 }
106
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.