diff options
Diffstat (limited to '')
-rwxr-xr-x | scripts/run-xmonad.sh | 2 | ||||
-rw-r--r-- | scripts/xmonad-status.c | 56 |
2 files changed, 57 insertions, 1 deletions
diff --git a/scripts/run-xmonad.sh b/scripts/run-xmonad.sh index aad2526..006d2b5 100755 --- a/scripts/run-xmonad.sh +++ b/scripts/run-xmonad.sh @@ -24,7 +24,7 @@ rm -f $PIPE [ -p $PIPE ] || exit # launch the external 60 second clock, and launch the workspace status bar -clock | dzen2 -e '' -x 300 -w 768 -ta r -fg $FG -bg $BG -fn $FONT & +xmonad-clock | dzen2 -e '' -x 300 -w 768 -ta r -fg $FG -bg $BG -fn $FONT & xmonad-status < $PIPE | dzen2 -e '' -w 300 -ta l -fg $FG -bg $BG -fn $FONT & # now go for it diff --git a/scripts/xmonad-status.c b/scripts/xmonad-status.c new file mode 100644 index 0000000..9fe7900 --- /dev/null +++ b/scripts/xmonad-status.c @@ -0,0 +1,56 @@ +/* + Module : xmonad-workspace.c + Copyright : (c) Don Stewart 2007 + License : BSD3-style (see LICENSE) + + Maintainer : dons@cse.unsw.edu.au + Stability : stable + Portability : portable + + C parser for new workspace format + +*/ + +#include <stdio.h> +#include <unistd.h> +#include <stdlib.h> +#include <signal.h> + +#define WORKSPACES 9 + +int main(void) { + + size_t len; + char workspaces[WORKSPACES]; + char buf[1024]; + char *s, *p, *q, current, *rest; + int n, i = 0; + + signal(SIGPIPE, SIG_IGN); + + while (fgets(buf, sizeof(buf), stdin) != NULL) { + + n = strlen(buf); + buf[n-1] = '\0'; + s = buf; + + /* extract tag of current workspace */ + current = *(char *)strsep(&s,"|"); + rest = s; + + /* 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]); + } + + putchar('\n'); + fflush(stdout); + } + return EXIT_SUCCESS; +} |