sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 4592266c79b14d22e1ec93b969f91ea188174672
parent 0d490a15463d6fe4d5cf50fe74f5b7d29573ba15
Author: Son Phan Trung <phantrungson17@gmail.com>
Date:   Sat, 27 Jan 2024 21:52:24 +0700

slstatus(patches/backlight): Add updated patch

This updated patch enables FreeBSD support:
- The text in index.md was removed in favor of the new patch.
- For details, see the patch.

Diffstat:
Mtools.suckless.org/slstatus/patches/backlight/index.md | 3+++
Atools.suckless.org/slstatus/patches/backlight/slstatus-backlight-20240127-f68f492.diff | 150+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 153 insertions(+), 0 deletions(-)

diff --git a/tools.suckless.org/slstatus/patches/backlight/index.md b/tools.suckless.org/slstatus/patches/backlight/index.md @@ -15,9 +15,12 @@ possible without dirty hacks. Download -------- * [slstatus-backlight-4bd78c9.diff](slstatus-backlight-4bd78c9.diff) +Updated patch, with FreeBSD support: +* [slstatus-backlight-20240127-f68f492.diff](slstatus-backlight-20240127-f68f492.diff) Authors ------- * Tobias Tschinkowitz <he4d@posteo.de> * David Demelier <markand@malikania.fr> * drkhsh <me@drkhsh.at> +* Son Phan Trung <phantrungson17@gmail.com> (FreeBSD support) diff --git a/tools.suckless.org/slstatus/patches/backlight/slstatus-backlight-20240127-f68f492.diff b/tools.suckless.org/slstatus/patches/backlight/slstatus-backlight-20240127-f68f492.diff @@ -0,0 +1,150 @@ +From aadea01ca9cd99932500f4988d7c57f6bc5fa6c5 Mon Sep 17 00:00:00 2001 +From: Son Phan Trung <phantrungson17@gmail.com> +Date: Sat, 27 Jan 2024 21:10:41 +0700 +Subject: [PATCH] Add backlight module for slstatus. + +FreeBSD support is added, with these things to keep in mind: +- Device names are numbered compared to Linux (e.g. "intel_backlight0" instead "intel_backlight). +- Max number is hardcoded to 100. +--- + Makefile | 1 + + components/backlight.c | 86 ++++++++++++++++++++++++++++++++++++++++++ + config.def.h | 3 ++ + slstatus.h | 3 ++ + 4 files changed, 93 insertions(+) + create mode 100644 components/backlight.c + +diff --git a/Makefile b/Makefile +index 7a18274..a7eacfa 100644 +--- a/Makefile ++++ b/Makefile +@@ -6,6 +6,7 @@ include config.mk + + REQ = util + COM =\ ++ components/backlight\ + components/battery\ + components/cat\ + components/cpu\ +diff --git a/components/backlight.c b/components/backlight.c +new file mode 100644 +index 0000000..46240f6 +--- /dev/null ++++ b/components/backlight.c +@@ -0,0 +1,86 @@ ++/* See LICENSE file for copyright and license details. */ ++ ++#include <stddef.h> ++ ++#include "../util.h" ++ ++#if defined(__linux__) ++ #include <limits.h> ++ ++ #define BRIGHTNESS_MAX "/sys/class/backlight/%s/max_brightness" ++ #define BRIGHTNESS_CUR "/sys/class/backlight/%s/brightness" ++ ++ const char * ++ backlight_perc(const char *card) ++ { ++ char path[PATH_MAX]; ++ int max, cur; ++ ++ if (esnprintf(path, sizeof (path), BRIGHTNESS_MAX, card) < 0 || ++ pscanf(path, "%d", &max) != 1) { ++ return NULL; ++ } ++ ++ if (esnprintf(path, sizeof (path), BRIGHTNESS_CUR, card) < 0 || ++ pscanf(path, "%d", &cur) != 1) { ++ return NULL; ++ } ++ ++ if (max == 0) { ++ return NULL; ++ } ++ ++ return bprintf("%d%%", cur * 100 / max); ++ } ++#elif defined(__OpenBSD__) ++ #include <fcntl.h> ++ #include <sys/ioctl.h> ++ #include <sys/time.h> ++ #include <dev/wscons/wsconsio.h> ++ ++ const char * ++ backlight_perc(const char *unused) ++ { ++ int fd, err; ++ struct wsdisplay_param wsd_param = { ++ .param = WSDISPLAYIO_PARAM_BRIGHTNESS ++ }; ++ ++ if ((fd = open("/dev/ttyC0", O_RDONLY)) < 0) { ++ warn("could not open /dev/ttyC0"); ++ return NULL; ++ } ++ if ((err = ioctl(fd, WSDISPLAYIO_GETPARAM, &wsd_param)) < 0) { ++ warn("ioctl 'WSDISPLAYIO_GETPARAM' failed"); ++ return NULL; ++ } ++ return bprintf("%d", wsd_param.curval * 100 / wsd_param.max); ++ } ++#elif defined(__FreeBSD__) ++ #include <fcntl.h> ++ #include <stdio.h> ++ #include <sys/ioctl.h> ++ #include <sys/backlight.h> ++ ++ #define FBSD_BACKLIGHT_DEV "/dev/backlight/%s" ++ ++ const char * ++ backlight_perc(const char *card) ++ { ++ char buf[256]; ++ struct backlight_props props; ++ int fd; ++ ++ snprintf(buf, sizeof(buf), FBSD_BACKLIGHT_DEV, card); ++ if ((fd = open(buf, O_RDWR)) == -1) { ++ warn("could not open %s", card); ++ return NULL; ++ } ++ if (ioctl(fd, BACKLIGHTGETSTATUS, &props) == -1){ ++ warn("Cannot query the backlight device"); ++ return NULL; ++ } ++ ++ return bprintf("%d", props.brightness); ++ } ++#endif +diff --git a/config.def.h b/config.def.h +index d805331..d56051d 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -12,6 +12,9 @@ static const char unknown_str[] = "n/a"; + /* + * function description argument (example) + * ++ * backlight_perc backlight percentage device name ++ * (intel_backlight, numbered on FreeBSD) ++ * NULL on OpenBSD + * battery_perc battery percentage battery name (BAT0) + * NULL on OpenBSD/FreeBSD + * battery_remaining battery remaining HH:MM battery name (BAT0) +diff --git a/slstatus.h b/slstatus.h +index 8ef5874..dc7e2d0 100644 +--- a/slstatus.h ++++ b/slstatus.h +@@ -1,5 +1,8 @@ + /* See LICENSE file for copyright and license details. */ + ++/* backlight */ ++const char *backlight_perc(const char *); ++ + /* battery */ + const char *battery_perc(const char *); + const char *battery_remaining(const char *); +-- +2.42.0 +