From 70ed7efda386b1089b295702a4c4fcf56cce1e4c Mon Sep 17 00:00:00 2001 From: Don Stewart Date: Sat, 9 Jun 2007 15:18:56 +0200 Subject: Add C script for parsing new logging encoding, and displaying workspace info darcs-hash:20070609131856-9c5c1-15812fa514ec6e0888ea1e36d3794a452b01090e.gz --- scripts/xmonad-status.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 scripts/xmonad-status.c (limited to 'scripts/xmonad-status.c') 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 +#include +#include +#include + +#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; +} -- cgit v1.2.3