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