Adding the main C file too.
parent
c30b12c8e9
commit
ea369273fd
|
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* See LICENSE file for copyright and license details.
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdbool.h>
|
||||
#include <libgen.h>
|
||||
#include <X11/extensions/scrnsaver.h>
|
||||
|
||||
#include "arg.h"
|
||||
|
||||
char *argv0;
|
||||
|
||||
void
|
||||
die(const char *errstr, ...) {
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, errstr);
|
||||
vfprintf(stderr, errstr, ap);
|
||||
va_end(ap);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
void
|
||||
usage(void)
|
||||
{
|
||||
die("usage: %s [-istv]\n", basename(argv0));
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[]) {
|
||||
XScreenSaverInfo *info;
|
||||
Display *dpy;
|
||||
int base, errbase;
|
||||
Bool showstate, showtill, showidle;
|
||||
|
||||
showstate = false;
|
||||
showtill = false;
|
||||
showidle = false;
|
||||
|
||||
ARGBEGIN {
|
||||
case 'i':
|
||||
showidle = true;
|
||||
break;
|
||||
case 's':
|
||||
showstate = true;
|
||||
break;
|
||||
case 't':
|
||||
showtill = true;
|
||||
break;
|
||||
case 'v':
|
||||
die("xssstate-"VERSION", © 2008-2012 xssstate engineers"
|
||||
", see LICENSE for details.\n");
|
||||
default:
|
||||
usage();
|
||||
} ARGEND;
|
||||
|
||||
if (!showstate && !showtill && !showidle)
|
||||
usage();
|
||||
|
||||
if (!(dpy = XOpenDisplay(0)))
|
||||
die("Cannot open display.\n");
|
||||
|
||||
if (!XScreenSaverQueryExtension(dpy, &base, &errbase))
|
||||
die("Screensaver extension not activated.\n");
|
||||
|
||||
info = XScreenSaverAllocInfo();
|
||||
XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), info);
|
||||
|
||||
if (showstate) {
|
||||
switch(info->state) {
|
||||
case ScreenSaverOn:
|
||||
printf("on\n");
|
||||
break;
|
||||
case ScreenSaverOff:
|
||||
printf("off\n");
|
||||
break;
|
||||
case ScreenSaverDisabled:
|
||||
printf("disabled\n");
|
||||
break;
|
||||
}
|
||||
} else if (showtill) {
|
||||
switch(info->state) {
|
||||
case ScreenSaverOn:
|
||||
printf("0\n");
|
||||
break;
|
||||
case ScreenSaverOff:
|
||||
printf("%ld\n", info->til_or_since);
|
||||
break;
|
||||
case ScreenSaverDisabled:
|
||||
printf("-1\n");
|
||||
break;
|
||||
}
|
||||
} else if (showidle) {
|
||||
printf("%ld\n", info->idle);
|
||||
}
|
||||
|
||||
|
||||
XCloseDisplay(dpy);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue