Introduction
Introduction Statistics Contact Development Disclaimer Help
tAdd battery plugin - spoon - dwm status utility (2f30 fork)
git clone git://src.adamsgaard.dk/spoon
Log
Files
Refs
LICENSE
---
commit 12b21d085d2e8d56034a7047dc1bcf60f49d46e8
parent aa689092b9b76e041c60d5a70fd18d10ef0742b3
Author: sin <[email protected]>
Date: Sat, 14 May 2016 17:52:37 +0100
Add battery plugin
Diffstat:
M spoon.c | 50 +++++++++++++++++++++++++----…
1 file changed, 40 insertions(+), 10 deletions(-)
---
diff --git a/spoon.c b/spoon.c
t@@ -1,15 +1,20 @@
#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
+#include <machine/apmvar.h>
+
#define LEN(x) (sizeof (x) / sizeof *(x))
+int dummyread(char *buf, size_t len);
int mpdread(char *buf, size_t len);
+int battread(char *buf, size_t len);
int dateread(char *buf, size_t len);
-int dummyread(char *buf, size_t len);
struct ent {
char *fmt;
t@@ -17,10 +22,19 @@ struct ent {
} ents[] = {
{ .fmt = "[%s]", .read = mpdread },
{ .fmt = " ", .read = dummyread },
+ { .fmt = "%s%%", .read = battread },
+ { .fmt = " ", .read = dummyread },
{ .fmt = "%s", .read = dateread },
};
int
+dummyread(char *buf, size_t len)
+{
+ buf[0] = '\0';
+ return 0;
+}
+
+int
mpdread(char *buf, size_t len)
{
strlcpy(buf, "mpd", len);
t@@ -28,6 +42,30 @@ mpdread(char *buf, size_t len)
}
int
+battread(char *buf, size_t len)
+{
+ struct apm_power_info info;
+ int ret, fd;
+
+ fd = open("/dev/apm", O_RDONLY);
+ if (fd < 0) {
+ warn("open %s", "/dev/apm");
+ return -1;
+ }
+
+ ret = ioctl(fd, APM_IOC_GETPOWER, &info);
+ if (ret < 0) {
+ warn("APM_IOC_GETPOWER %s", "/dev/apm");
+ close(fd);
+ return -1;
+ }
+ close(fd);
+
+ snprintf(buf, len, "%d", info.battery_life);
+ return 0;
+}
+
+int
dateread(char *buf, size_t len)
{
struct tm *now;
t@@ -41,21 +79,13 @@ dateread(char *buf, size_t len)
return 0;
}
-int
-dummyread(char *buf, size_t len)
-{
- buf[0] = '\0';
- return 0;
-}
-
void
entcat(char *line, size_t len)
{
char buf[BUFSIZ];
char *s, *e;
struct ent *ent;
- int ret;
- int i;
+ int ret, i;
s = line;
e = line + len;
You are viewing proxied material from mx1.adamsgaard.dk. 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.