it* dwmstatus for OpenBSD Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/dwmstatus-sdk URL:git://git.codevoid.de/dwmstatus-sdk codevoid.de 70 1Log /git/dwmstatus-sdk/log.gph codevoid.de 70 1Files /git/dwmstatus-sdk/files.gph codevoid.de 70 1Refs /git/dwmstatus-sdk/refs.gph codevoid.de 70 1LICENSE /git/dwmstatus-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit c891fa7936514f8933b0bd23dadac36149d67f19 /git/dwmstatus-sdk/commit/c891fa7936514f8933b0bd23dadac36149d67f19.gph codevoid.de 70 1parent 284e83b7a08209da3b1c70fce10f9a7821f00044 /git/dwmstatus-sdk/commit/284e83b7a08209da3b1c70fce10f9a7821f00044.gph codevoid.de 70 hAuthor: Stefan Hagen URL:mailto:github@textmail.me codevoid.de 70 iDate: Sun, 20 May 2018 22:26:54 +0200 Err codevoid.de 70 i Err codevoid.de 70 isysctl interface - first version Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M dwmstatus.c | 76 +++++++++++++++++-------------- Err codevoid.de 70 i Err codevoid.de 70 i1 file changed, 42 insertions(+), 34 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/dwmstatus.c b/dwmstatus.c /git/dwmstatus-sdk/file/dwmstatus.c.gph codevoid.de 70 it@@ -13,16 +13,20 @@ Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 i #include Err codevoid.de 70 i+#include Err codevoid.de 70 i #include Err codevoid.de 70 i Err codevoid.de 70 i #include Err codevoid.de 70 i Err codevoid.de 70 i-char *tzargentina = "America/Buenos_Aires"; Err codevoid.de 70 i-char *tzutc = "UTC"; Err codevoid.de 70 i+#define ZEROC 2731 Err codevoid.de 70 i+#define CONVC(x) ((x)-ZEROC) / 10 Err codevoid.de 70 i+ Err codevoid.de 70 i+ Err codevoid.de 70 i char *tzberlin = "Europe/Berlin"; Err codevoid.de 70 i Err codevoid.de 70 i static Display *dpy; Err codevoid.de 70 i Err codevoid.de 70 i+ Err codevoid.de 70 i char * Err codevoid.de 70 i smprintf(char *fmt, ...) Err codevoid.de 70 i { Err codevoid.de 70 it@@ -44,7 +48,28 @@ smprintf(char *fmt, ...) Err codevoid.de 70 i vsnprintf(ret, len, fmt, fmtargs); Err codevoid.de 70 i va_end(fmtargs); Err codevoid.de 70 i Err codevoid.de 70 i- return ret; Err codevoid.de 70 i+ return ret; Err codevoid.de 70 i+} Err codevoid.de 70 i+ Err codevoid.de 70 i+char * Err codevoid.de 70 i+getsysctl(char *input_str) { Err codevoid.de 70 i+ char *ret_val; Err codevoid.de 70 i+ size_t ret_size; Err codevoid.de 70 i+ Err codevoid.de 70 i+ sysctlbyname(input_str, NULL, &ret_size, NULL, 0); Err codevoid.de 70 i+ ret_val = malloc(ret_size); Err codevoid.de 70 i+ Err codevoid.de 70 i+ // call to get size Err codevoid.de 70 i+ sysctlbyname(input_str, NULL, &ret_size, NULL, 0); Err codevoid.de 70 i+ Err codevoid.de 70 i+ // allocate memory Err codevoid.de 70 i+ ret_val = malloc(ret_size); Err codevoid.de 70 i+ Err codevoid.de 70 i+ // retrieve value Err codevoid.de 70 i+ sysctlbyname(input_str, &ret_val, &ret_size, NULL, 0); Err codevoid.de 70 i+ Err codevoid.de 70 i+ // caller must know how to interpret this (s or i) Err codevoid.de 70 i+ return ret_val; Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i void Err codevoid.de 70 it@@ -179,13 +204,9 @@ int Err codevoid.de 70 i main(void) Err codevoid.de 70 i { Err codevoid.de 70 i char *status; Err codevoid.de 70 i- char *avgs; Err codevoid.de 70 i- char *bat; Err codevoid.de 70 i- char *bat1; Err codevoid.de 70 i- char *tmar; Err codevoid.de 70 i- char *tmutc; Err codevoid.de 70 i- char *tmbln; Err codevoid.de 70 i- char *t0, *t1, *t2, *t3; Err codevoid.de 70 i+ char *datetime; Err codevoid.de 70 i+ char *cputemp; Err codevoid.de 70 i+ char *battery; Err codevoid.de 70 i Err codevoid.de 70 i if (!(dpy = XOpenDisplay(NULL))) { Err codevoid.de 70 i fprintf(stderr, "dwmstatus: cannot open display.\n"); Err codevoid.de 70 it@@ -193,32 +214,19 @@ main(void) Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i for (;;sleep(60)) { Err codevoid.de 70 i- avgs = loadavg(); Err codevoid.de 70 i- bat = getbattery("/sys/class/power_supply/BAT0"); Err codevoid.de 70 i- bat1 = getbattery("/sys/class/power_supply/BAT1"); Err codevoid.de 70 i- tmar = mktimes("%H:%M", tzargentina); Err codevoid.de 70 i- tmutc = mktimes("%H:%M", tzutc); Err codevoid.de 70 i- tmbln = mktimes("KW %W %a %d %b %H:%M %Z %Y", tzberlin); Err codevoid.de 70 i- t0 = gettemperature("/sys/devices/virtual/hwmon/hwmon1", "temp1_input"); Err codevoid.de 70 i- t1 = gettemperature("/sys/devices/platform/coretemp.0/hwmon/hwmon3", "temp1_input"); Err codevoid.de 70 i- t2 = gettemperature("/sys/devices/platform/coretemp.0/hwmon/hwmon3", "temp2_input"); Err codevoid.de 70 i- t3 = gettemperature("/sys/devices/platform/coretemp.0/hwmon/hwmon3", "temp3_input"); Err codevoid.de 70 i- Err codevoid.de 70 i- status = smprintf("T:%s|%s|%s|%s L:%s B:%s|%s A:%s U:%s %s", Err codevoid.de 70 i- t0, t1, t2, t3, avgs, bat, bat1, tmar, tmutc, Err codevoid.de 70 i- tmbln); Err codevoid.de 70 i+ datetime = mktimes("%d.%m.%Y %H:%M", tzberlin); Err codevoid.de 70 i+ Err codevoid.de 70 i+ cputemp = smprintf("%i", CONVC((int)getsysctl("hw.acpi.thermal.tz0.temperature"))); Err codevoid.de 70 i+ battery = smprintf("%i", (int)getsysctl("hw.acpi.battery.life")); Err codevoid.de 70 i+ Err codevoid.de 70 i+ status = smprintf(" CPU:%s°C BAT:%s%% | %s %s", Err codevoid.de 70 i+ cputemp, battery, datetime); Err codevoid.de 70 i+ Err codevoid.de 70 i setstatus(status); Err codevoid.de 70 i Err codevoid.de 70 i- free(t0); Err codevoid.de 70 i- free(t1); Err codevoid.de 70 i- free(t2); Err codevoid.de 70 i- free(t3); Err codevoid.de 70 i- free(avgs); Err codevoid.de 70 i- free(bat); Err codevoid.de 70 i- free(bat1); Err codevoid.de 70 i- free(tmar); Err codevoid.de 70 i- free(tmutc); Err codevoid.de 70 i- free(tmbln); Err codevoid.de 70 i+ free(battery); Err codevoid.de 70 i+ free(cputemp); Err codevoid.de 70 i+ free(datetime); Err codevoid.de 70 i free(status); Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 .