diff options
-rw-r--r-- | scripts/xmonad-status.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/scripts/xmonad-status.c b/scripts/xmonad-status.c index 9fe7900..0aa45dd 100644 --- a/scripts/xmonad-status.c +++ b/scripts/xmonad-status.c @@ -12,6 +12,7 @@ */ #include <stdio.h> +#include <string.h> #include <unistd.h> #include <stdlib.h> #include <signal.h> @@ -20,18 +21,16 @@ int main(void) { - size_t len; - char workspaces[WORKSPACES]; char buf[1024]; - char *s, *p, *q, current, *rest; - int n, i = 0; + char *s, current, *rest; + int i; signal(SIGPIPE, SIG_IGN); while (fgets(buf, sizeof(buf), stdin) != NULL) { - n = strlen(buf); - buf[n-1] = '\0'; + i = strlen(buf); + buf[i-1] = '\0'; s = buf; /* extract tag of current workspace */ @@ -40,13 +39,15 @@ int main(void) { /* split up workspace list */ /* extract just the tags of the workspace list */ - while (i < WORKSPACES) { - workspaces[i++] = *(char *)strsep(&rest, ","); - } - - /* now print out list */ for (i = 0; i < WORKSPACES; i++) { - printf(((workspaces[i] == current) ? "[%c]" : " %c "), workspaces[i]); + s = (char *)strsep(&rest, ","); + + if (*s == current) { + printf("[%c]", *s); + } else if (s[2] != ':') { /* filter empty workspaces */ + printf(" %c ", *s); + } + } putchar('\n'); |