diff options
Diffstat (limited to 'bin/i3status.py')
-rwxr-xr-x | bin/i3status.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/bin/i3status.py b/bin/i3status.py index 421317e..1e00e62 100755 --- a/bin/i3status.py +++ b/bin/i3status.py @@ -29,6 +29,9 @@ def parse_kbdlayout(s): } return [{'full_text': s, 'color': colors[s]}] +def parse_cloogle(s): + return [{'full_text': s}] + def merge_status_items(*args): return [item for sublist in args for item in sublist] @@ -39,25 +42,31 @@ if __name__ == '__main__': i3stat = Popen(['i3status'], stdout=PIPE, bufsize=1, close_fds=True) kbdlayout = Popen(['unbuffer', 'kbdlayout'], stdout=PIPE, bufsize=1, close_fds=True) + cloogle = Popen(['unbuffer', 'cloogle_stats.py'], + stdout=PIPE, bufsize=1, close_fds=True) # skip i3status header sys.stdout.write(i3stat.stdout.readline()) sys.stdout.write(i3stat.stdout.readline()) - stat, kbd = [], [] + stat, kbd, clg = [], [], [] try: + stdouts = [p.stdout for p in [i3stat, kbdlayout, cloogle]] while True: - fs = select([p.stdout for p in [i3stat, kbdlayout]], [], [])[0] + fs = select(stdouts, [], [])[0] for f in fs: line = f.readline()[:-1] if f == kbdlayout.stdout: kbd = parse_kbdlayout(line) - else: + elif f == cloogle.stdout: + clg = parse_cloogle(line) + elif f == i3stat.stdout: stat = parse_i3stat(line) - print_i3stat(merge_status_items(kbd, stat)) + print_i3stat(merge_status_items(kbd, clg, stat)) - except: + except Exception, e: + print(e) i3stat.kill() kbdlayout.kill() - + cloogle.kill() |