tbrightness.c - spoon - [fork] customized build of spoon, the dwm status utility
(HTM) git clone git://src.adamsgaard.dk/spoon
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) 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