slstatus-backlight-4bd78c9.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       slstatus-backlight-4bd78c9.diff (2788B)
       ---
            1 diff --git a/Makefile b/Makefile
            2 index 3be46cc..93dc2c5 100644
            3 --- a/Makefile
            4 +++ b/Makefile
            5 @@ -6,6 +6,7 @@ include config.mk
            6  
            7  REQ = util
            8  COM =\
            9 +        components/backlight\
           10          components/battery\
           11          components/cpu\
           12          components/datetime\
           13 diff --git a/components/backlight.c b/components/backlight.c
           14 new file mode 100644
           15 index 0000000..74f4c08
           16 --- /dev/null
           17 +++ b/components/backlight.c
           18 @@ -0,0 +1,59 @@
           19 +/* See LICENSE file for copyright and license details. */
           20 +
           21 +#include <stddef.h>
           22 +
           23 +#include "../util.h"
           24 +
           25 +#if defined(__linux__)
           26 +        #include <limits.h>
           27 +
           28 +        #define BRIGHTNESS_MAX "/sys/class/backlight/%s/max_brightness"
           29 +        #define BRIGHTNESS_CUR "/sys/class/backlight/%s/brightness"
           30 +
           31 +        const char *
           32 +        backlight_perc(const char *card)
           33 +        {
           34 +                char path[PATH_MAX];
           35 +                int max, cur;
           36 +
           37 +                if (esnprintf(path, sizeof (path), BRIGHTNESS_MAX, card) < 0 ||
           38 +                        pscanf(path, "%d", &max) != 1) {
           39 +                        return NULL;
           40 +                }
           41 +
           42 +                if (esnprintf(path, sizeof (path), BRIGHTNESS_CUR, card) < 0 ||
           43 +                        pscanf(path, "%d", &cur) != 1) {
           44 +                        return NULL;
           45 +                }
           46 +
           47 +                if (max == 0) {
           48 +                        return NULL;
           49 +                }
           50 +
           51 +                return bprintf("%d%%", cur * 100 / max);
           52 +        }
           53 +#elif defined(__OpenBSD__)
           54 +        #include <fcntl.h>
           55 +        #include <sys/ioctl.h>
           56 +        #include <sys/time.h>
           57 +        #include <dev/wscons/wsconsio.h>
           58 +
           59 +        const char *
           60 +        backlight_perc(const char *unused)
           61 +        {
           62 +                int fd, err;
           63 +                struct wsdisplay_param wsd_param = {
           64 +                        .param = WSDISPLAYIO_PARAM_BRIGHTNESS
           65 +                };
           66 +
           67 +                if ((fd = open("/dev/ttyC0", O_RDONLY)) < 0) {
           68 +                        warn("could not open /dev/ttyC0");
           69 +                        return NULL;
           70 +                }
           71 +                if ((err = ioctl(fd, WSDISPLAYIO_GETPARAM, &wsd_param)) < 0) {
           72 +                        warn("ioctl 'WSDISPLAYIO_GETPARAM' failed");
           73 +                        return NULL;
           74 +                }
           75 +                return bprintf("%d", wsd_param.curval * 100 / wsd_param.max);
           76 +        }
           77 +#endif
           78 diff --git a/config.def.h b/config.def.h
           79 index 5f6c114..69c5d50 100644
           80 --- a/config.def.h
           81 +++ b/config.def.h
           82 @@ -12,6 +12,9 @@ static const char unknown_str[] = "n/a";
           83  /*
           84   * function            description                     argument (example)
           85   *
           86 + * backlight_perc      backlight percentage            device name
           87 + *                                                     (intel_backlight)
           88 + *                                                     NULL on OpenBSD
           89   * battery_perc        battery percentage              battery name (BAT0)
           90   *                                                     NULL on OpenBSD/FreeBSD
           91   * battery_state       battery charging state          battery name (BAT0)
           92 diff --git a/slstatus.h b/slstatus.h
           93 index f3b4979..e1759a0 100644
           94 --- a/slstatus.h
           95 +++ b/slstatus.h
           96 @@ -1,5 +1,8 @@
           97  /* See LICENSE file for copyright and license details. */
           98  
           99 +/* backlight */
          100 +const char *backlight_perc(const char *);
          101 +
          102  /* battery */
          103  const char *battery_perc(const char *);
          104  const char *battery_state(const char *);