aboutsummaryrefslogtreecommitdiff
path: root/bin/i3status.py
diff options
context:
space:
mode:
authorCamil Staps2017-02-20 10:06:38 +0100
committerCamil Staps2017-02-20 10:06:38 +0100
commit73ae3a47a410eb2db9c3c776c0252e1feaeb2d7e (patch)
tree4835551f5d769ede433ed390d3cfc2406975480c /bin/i3status.py
parentCloogle stats in status bar (diff)
Reorganise binaries
Diffstat (limited to 'bin/i3status.py')
-rwxr-xr-xbin/i3status.py72
1 files changed, 0 insertions, 72 deletions
diff --git a/bin/i3status.py b/bin/i3status.py
deleted file mode 100755
index 1e00e62..0000000
--- a/bin/i3status.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env python
-import json
-from select import select
-from subprocess import Popen, PIPE
-import sys
-
-def remove_empty_outputs(obj):
- return [o for o in obj if o['full_text'].strip() != '']
-
-first = True
-def print_i3stat(j):
- global first
- j = remove_empty_outputs(j)
- sys.stdout.write(('' if first else ',') + json.dumps(j) + '\n')
- sys.stdout.flush()
- first = False
-
-def parse_i3stat(s):
- if s[0] == ',':
- s = s[1:]
- j = json.loads(s)
- return j
-
-def parse_kbdlayout(s):
- colors = { 'us(intl)' : '#66ccff',
- 'us(dvorak-intl)' : '#dc68fc',
- 'ru(phonetic)' : '#ff3300',
- 'il(biblicalSIL)' : '#66ff66'
- }
- 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]
-
-if __name__ == '__main__':
- timeout = 0.1
-
- # open subprocesses
- 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, clg = [], [], []
- try:
- stdouts = [p.stdout for p in [i3stat, kbdlayout, cloogle]]
- while True:
- fs = select(stdouts, [], [])[0]
- for f in fs:
- line = f.readline()[:-1]
- if f == kbdlayout.stdout:
- kbd = parse_kbdlayout(line)
- elif f == cloogle.stdout:
- clg = parse_cloogle(line)
- elif f == i3stat.stdout:
- stat = parse_i3stat(line)
-
- print_i3stat(merge_status_items(kbd, clg, stat))
-
- except Exception, e:
- print(e)
- i3stat.kill()
- kbdlayout.kill()
- cloogle.kill()