tbrightness.c - spoon - [fork] customized build of spoon, the dwm status utility | |
git clone git://src.adamsgaard.dk/spoon | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
tbrightness.c (1111B) | |
--- | |
1 #include <err.h> | |
2 #include <stdio.h> | |
3 | |
4 #ifdef __OpenBSD__ | |
5 #include <sys/ioctl.h> | |
6 #include <fcntl.h> | |
7 #include <time.h> | |
8 #include <unistd.h> | |
9 #include <dev/wscons/wsconsio.h> | |
10 | |
11 int | |
12 brightnessread(void *arg, char *buf, size_t len) | |
13 { | |
14 struct wsdisplay_param dpyp; | |
15 int fd; | |
16 | |
17 if ((fd = open("/dev/ttyC0", O_RDONLY)) == -1) { | |
18 warn("couldn't open /dev/ttyC0"); | |
19 return -1; | |
20 } | |
21 dpyp.param = WSDISPLAYIO_PARAM_BRIGHTNESS; | |
22 if (ioctl(fd, WSDISPLAYIO_GETPARAM, &dpyp) == -1) { | |
23 warn("WSDISPLAYIO_PARAM_BRIGHTNESS ioctl"); | |
24 return -1; | |
25 } | |
26 close(fd); | |
27 snprintf(buf, len, "%3d%%", | |
28 100 * (dpyp.curval - dpyp.min) / (dpyp.max - dpyp.min)); | |
29 | |
30 return 0; | |
31 } | |
32 #elif __linux__ | |
33 #include <sys/wait.h> | |
34 int | |
35 brightnessread(void *arg, char *buf, size_t len) | |
36 { | |
37 FILE *fp; | |
38 int brightness; | |
39 | |
40 fp = popen("xbacklight", "r"); | |
41 if (fp == NULL) | |
42 return -1; | |
43 if (fscanf(fp, "%d", &brightness) == EOF) { | |
44 if (ferror(fp)) { | |
45 pclose(fp); | |
46 return -1; | |
47 } | |
48 } | |
49 /* This system does not have a backlight so report it as 100% */ | |
50 if (WEXITSTATUS(pclose(fp)) == 1) | |
51 brightness = 100; | |
52 snprintf(buf, len, "%3d%%", brightness); | |
53 return 0; | |
54 } | |
55 #endif |