summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--config.def.h1
-rw-r--r--slstatus.c32
3 files changed, 34 insertions, 1 deletions
diff --git a/README.md b/README.md
index 534eee0..686922c 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ Looking at the LOC (lines of code) of the [Conky project](https://github.com/brn
The following information is included:
-- Battery percentage
+- Battery percentage/state
- CPU usage (in percent)
- Custom shell commands
- Date and time
diff --git a/config.def.h b/config.def.h
index a445aa7..4f56eb0 100644
--- a/config.def.h
+++ b/config.def.h
@@ -8,6 +8,7 @@
/* statusbar
- battery_perc (battery percentage) [argument: battery name]
+- battery_state (battery charging state) [argument: battery name]
- cpu_perc (cpu usage in percent) [argument: NULL]
- datetime (date and time) [argument: format]
- disk_free (disk usage in percent) [argument: mountpoint]
diff --git a/slstatus.c b/slstatus.c
index fa91cce..1d46674 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -40,6 +40,7 @@ struct arg {
static char *smprintf(const char *, ...);
static char *battery_perc(const char *);
+static char *battery_state(const char *);
static char *cpu_perc(void);
static char *datetime(const char *);
static char *disk_free(const char *);
@@ -114,6 +115,37 @@ battery_perc(const char *battery)
}
static char *
+battery_state(const char *battery)
+{
+ char *state = malloc(sizeof(char)*12);
+ FILE *fp;
+
+ if (!state) {
+ warn("Failed to get battery state.");
+ return smprintf(UNKNOWN_STR);
+ }
+
+
+ ccat(3, "/sys/class/power_supply/", battery, "/status");
+ fp = fopen(concat, "r");
+ if (fp == NULL) {
+ warn("Error opening battery file: %s", concat);
+ return smprintf(UNKNOWN_STR);
+ }
+ fscanf(fp, "%s", state);
+ fclose(fp);
+
+ if (strcmp(state, "Charging") == 0)
+ return smprintf("+");
+ else if (strcmp(state, "Discharging") == 0)
+ return smprintf("-");
+ else if (strcmp(state, "Full") == 0)
+ return smprintf("=");
+ else
+ return smprintf("?");
+}
+
+static char *
cpu_perc(void)
{
int perc;