diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/print_run_watch.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/print_run_watch.c b/src/print_run_watch.c index 391467e..807e322 100644 --- a/src/print_run_watch.c +++ b/src/print_run_watch.c @@ -1,10 +1,27 @@ #include <stdio.h> +#include <string.h> #include "i3status.h" void print_run_watch(const char *title, const char *pidfile, const char *format) { bool running = process_runs(pidfile); - printf("%s%s: %s%s", - (running ? color("#00FF00") : color("#FF0000")), - title, - (running ? "yes" : "no"), endcolor()); + const char *walk; + + printf("%s", (running ? color("#00FF00") : color("#FF0000"))); + + for (walk = format; *walk != '\0'; walk++) { + if (*walk != '%') { + putchar(*walk); + continue; + } + + if (strncmp(walk+1, "title", strlen("title")) == 0) { + printf("%s", title); + walk += strlen("title"); + } else if (strncmp(walk+1, "status", strlen("status")) == 0) { + printf("%s", (running ? "yes" : "no")); + walk += strlen("status"); + } + } + + printf("%s", endcolor()); } |