summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--config.def.h1
-rw-r--r--slstatus.c26
3 files changed, 28 insertions, 0 deletions
diff --git a/README.md b/README.md
index 7e2ac20..404977f 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,7 @@ The following information is included:
- battery percentage
- cpu usage (in percent)
+- custom shell commands
- date and time
- disk numbers (free storage, percentage, total storage and used storage)
- available entropy
diff --git a/config.def.h b/config.def.h
index b272a66..c9da314 100644
--- a/config.def.h
+++ b/config.def.h
@@ -27,6 +27,7 @@ static unsigned int update_interval = 1;
- ram_perc (ram usage in percent) [argument: NULL]
- ram_total (ram usage in percent) [argument: NULL]
- ram_used (ram usage in percent) [argument: NULL]
+- run_command (run custom shell command) [argument: command]
- temp (temperature in degrees) [argument: temperature file]
- uid (uid of current user) [argument: NULL]
- username (username of current user) [argument: NULL]
diff --git a/slstatus.c b/slstatus.c
index 6d56000..a5807dd 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -444,6 +444,32 @@ ram_used(const char *null)
return smprintf("%f", (float)used / 1024 / 1024);
}
+/* custom shell command */
+char *
+run_command(const char* command)
+{
+ FILE *fp;
+ char buffer[64];
+
+ /* try to open the command output */
+ if (!(fp = popen(command, "r"))) {
+ fprintf(stderr, "Could not get command output for: %s.\n", command);
+ return smprintf("n/a");
+ }
+
+ /* get command output text, save it to buffer */
+ fgets(buffer, sizeof(buffer)-1, fp);
+
+ /* close it again */
+ pclose(fp);
+
+ /* add nullchar at the end */
+ buffer[strlen(buffer) - 1] = '\0';
+
+ /* return the output */
+ return smprintf("%s", buffer);
+}
+
/* temperature */
char *
temp(const char *file)