Introduction
Introduction Statistics Contact Development Disclaimer Help
slstatus-backlight-20240127-f68f492.diff - sites - public wiki contents of suck…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
slstatus-backlight-20240127-f68f492.diff (4098B)
---
1 From aadea01ca9cd99932500f4988d7c57f6bc5fa6c5 Mon Sep 17 00:00:00 2001
2 From: Son Phan Trung <[email protected]>
3 Date: Sat, 27 Jan 2024 21:10:41 +0700
4 Subject: [PATCH] Add backlight module for slstatus.
5
6 FreeBSD support is added, with these things to keep in mind:
7 - Device names are numbered compared to Linux (e.g. "intel_backlight0" i…
8 - Max number is hardcoded to 100.
9 ---
10 Makefile | 1 +
11 components/backlight.c | 86 ++++++++++++++++++++++++++++++++++++++++++
12 config.def.h | 3 ++
13 slstatus.h | 3 ++
14 4 files changed, 93 insertions(+)
15 create mode 100644 components/backlight.c
16
17 diff --git a/Makefile b/Makefile
18 index 7a18274..a7eacfa 100644
19 --- a/Makefile
20 +++ b/Makefile
21 @@ -6,6 +6,7 @@ include config.mk
22
23 REQ = util
24 COM =\
25 + components/backlight\
26 components/battery\
27 components/cat\
28 components/cpu\
29 diff --git a/components/backlight.c b/components/backlight.c
30 new file mode 100644
31 index 0000000..46240f6
32 --- /dev/null
33 +++ b/components/backlight.c
34 @@ -0,0 +1,86 @@
35 +/* See LICENSE file for copyright and license details. */
36 +
37 +#include <stddef.h>
38 +
39 +#include "../util.h"
40 +
41 +#if defined(__linux__)
42 + #include <limits.h>
43 +
44 + #define BRIGHTNESS_MAX "/sys/class/backlight/%s/max_brightness"
45 + #define BRIGHTNESS_CUR "/sys/class/backlight/%s/brightness"
46 +
47 + const char *
48 + backlight_perc(const char *card)
49 + {
50 + char path[PATH_MAX];
51 + int max, cur;
52 +
53 + if (esnprintf(path, sizeof (path), BRIGHTNESS_MAX, card…
54 + pscanf(path, "%d", &max) != 1) {
55 + return NULL;
56 + }
57 +
58 + if (esnprintf(path, sizeof (path), BRIGHTNESS_CUR, card…
59 + pscanf(path, "%d", &cur) != 1) {
60 + return NULL;
61 + }
62 +
63 + if (max == 0) {
64 + return NULL;
65 + }
66 +
67 + return bprintf("%d%%", cur * 100 / max);
68 + }
69 +#elif defined(__OpenBSD__)
70 + #include <fcntl.h>
71 + #include <sys/ioctl.h>
72 + #include <sys/time.h>
73 + #include <dev/wscons/wsconsio.h>
74 +
75 + const char *
76 + backlight_perc(const char *unused)
77 + {
78 + int fd, err;
79 + struct wsdisplay_param wsd_param = {
80 + .param = WSDISPLAYIO_PARAM_BRIGHTNESS
81 + };
82 +
83 + if ((fd = open("/dev/ttyC0", O_RDONLY)) < 0) {
84 + warn("could not open /dev/ttyC0");
85 + return NULL;
86 + }
87 + if ((err = ioctl(fd, WSDISPLAYIO_GETPARAM, &wsd_param))…
88 + warn("ioctl 'WSDISPLAYIO_GETPARAM' failed");
89 + return NULL;
90 + }
91 + return bprintf("%d", wsd_param.curval * 100 / wsd_param…
92 + }
93 +#elif defined(__FreeBSD__)
94 + #include <fcntl.h>
95 + #include <stdio.h>
96 + #include <sys/ioctl.h>
97 + #include <sys/backlight.h>
98 +
99 + #define FBSD_BACKLIGHT_DEV "/dev/backlight/%s"
100 +
101 + const char *
102 + backlight_perc(const char *card)
103 + {
104 + char buf[256];
105 + struct backlight_props props;
106 + int fd;
107 +
108 + snprintf(buf, sizeof(buf), FBSD_BACKLIGHT_DEV, card);
109 + if ((fd = open(buf, O_RDWR)) == -1) {
110 + warn("could not open %s", card);
111 + return NULL;
112 + }
113 + if (ioctl(fd, BACKLIGHTGETSTATUS, &props) == -1){
114 + warn("Cannot query the backlight device");
115 + return NULL;
116 + }
117 +
118 + return bprintf("%d", props.brightness);
119 + }
120 +#endif
121 diff --git a/config.def.h b/config.def.h
122 index d805331..d56051d 100644
123 --- a/config.def.h
124 +++ b/config.def.h
125 @@ -12,6 +12,9 @@ static const char unknown_str[] = "n/a";
126 /*
127 * function description argument (exampl…
128 *
129 + * backlight_perc backlight percentage device name
130 + * (intel_backlight…
131 + * NULL on OpenBSD
132 * battery_perc battery percentage battery name (BA…
133 * NULL on OpenBSD/…
134 * battery_remaining battery remaining HH:MM battery name (BA…
135 diff --git a/slstatus.h b/slstatus.h
136 index 8ef5874..dc7e2d0 100644
137 --- a/slstatus.h
138 +++ b/slstatus.h
139 @@ -1,5 +1,8 @@
140 /* See LICENSE file for copyright and license details. */
141
142 +/* backlight */
143 +const char *backlight_perc(const char *);
144 +
145 /* battery */
146 const char *battery_perc(const char *);
147 const char *battery_remaining(const char *);
148 --
149 2.42.0
150
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.