Introduction
Introduction Statistics Contact Development Disclaimer Help
Add FreeBSD support for temperature and battery components - slstatus - status …
git clone git://git.suckless.org/slstatus
Log
Files
Refs
README
LICENSE
---
commit ec306623df7321a4e6ec11f70b6152a2e614d1ed
parent dd7f1896aa9883f33b4d28cd192e8088db0cab5a
Author: Michael Buch <[email protected]>
Date: Sun, 27 Jan 2019 15:44:39 +0000
Add FreeBSD support for temperature and battery components
Diffstat:
M components/battery.c | 53 ++++++++++++++++++++++++++++++
M components/temperature.c | 22 ++++++++++++++++++++++
M config.def.h | 8 +++++---
3 files changed, 80 insertions(+), 3 deletions(-)
---
diff --git a/components/battery.c b/components/battery.c
@@ -195,4 +195,57 @@
return NULL;
}
+#elif defined(__FreeBSD__)
+ #include <sys/sysctl.h>
+
+ const char *
+ battery_perc(const char *unused)
+ {
+ int cap;
+ size_t len;
+
+ len = sizeof(cap);
+ if (sysctlbyname("hw.acpi.battery.life", &cap, &len, NULL, 0) …
+ || !len)
+ return NULL;
+
+ return bprintf("%d", cap);
+ }
+
+ const char *
+ battery_state(const char *unused)
+ {
+ int state;
+ size_t len;
+
+ len = sizeof(state);
+ if (sysctlbyname("hw.acpi.battery.state", &state, &len, NULL, …
+ || !len)
+ return NULL;
+
+ switch(state) {
+ case 0:
+ case 2:
+ return "+";
+ case 1:
+ return "-";
+ default:
+ return "?";
+ }
+ }
+
+ const char *
+ battery_remaining(const char *unused)
+ {
+ int rem;
+ size_t len;
+
+ len = sizeof(rem);
+ if (sysctlbyname("hw.acpi.battery.time", &rem, &len, NULL, 0) …
+ || !len
+ || rem == -1)
+ return NULL;
+
+ return bprintf("%uh %02um", rem / 60, rem % 60);
+ }
#endif
diff --git a/components/temperature.c b/components/temperature.c
@@ -3,6 +3,7 @@
#include "../util.h"
+
#if defined(__linux__)
#include <stdint.h>
@@ -46,4 +47,25 @@
/* kelvin to celsius */
return bprintf("%d", (temp.value - 273150000) / 1E6);
}
+#elif defined(__FreeBSD__)
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <sys/sysctl.h>
+
+ const char *
+ temp(const char *zone)
+ {
+ char buf[256];
+ int temp;
+ size_t len;
+
+ len = sizeof(temp);
+ snprintf(buf, sizeof(buf), "hw.acpi.thermal.%s.temperature", z…
+ if (sysctlbyname(buf, &temp, &len, NULL, 0) == -1
+ || !len)
+ return NULL;
+
+ /* kelvin to decimal celcius */
+ return bprintf("%d.%d", (temp - 2731) / 10, abs((temp - 2731) …
+ }
#endif
diff --git a/config.def.h b/config.def.h
@@ -13,11 +13,11 @@ static const char unknown_str[] = "n/a";
* function description argument (example)
*
* battery_perc battery percentage battery name (BAT0)
- * NULL on OpenBSD
+ * NULL on OpenBSD/FreeBSD
* battery_state battery charging state battery name (BAT0)
- * NULL on OpenBSD
+ * NULL on OpenBSD/FreeBSD
* battery_remaining battery remaining HH:MM battery name (BAT0)
- * NULL on OpenBSD
+ * NULL on OpenBSD/FreeBSD
* cpu_perc cpu usage in percent NULL
* cpu_freq cpu frequency in MHz NULL
* datetime date and time format string (%F %T)
@@ -52,6 +52,8 @@ static const char unknown_str[] = "n/a";
* temp temperature in degree celsius sensor file
* (/sys/class/thermal/...)
* NULL on OpenBSD
+ * thermal zone on FreeBSD
+ * (tz0, tz1, etc.)
* uid UID of current user NULL
* uptime system uptime NULL
* username username of current user NULL
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.