aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/xmonad-status.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--scripts/xmonad-status.c25
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');