Browse Source

battery_state() function added

Aaron Marcher 9 years ago
parent
commit
f13104156f
3 changed files with 34 additions and 1 deletions
  1. 1 1
      README.md
  2. 1 0
      config.def.h
  3. 32 0
      slstatus.c

+ 1 - 1
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

+ 1 - 0
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]

+ 32 - 0
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 *);
@@ -113,6 +114,37 @@ battery_perc(const char *battery)
 	return smprintf("%d%%", perc);
 }
 
+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)
 {