aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2017-02-20 09:15:16 +0100
committerCamil Staps2017-02-20 09:15:16 +0100
commitb6189b101aa5142054f28a3940121c4134037554 (patch)
tree0e1d9a4e2abbc2990eef77f94edb730fee192a58
parentUpdate XC8 (diff)
Cloogle stats in status bar
-rwxr-xr-xbin/cloogle_stats.py35
-rwxr-xr-xbin/i3status.py21
2 files changed, 50 insertions, 6 deletions
diff --git a/bin/cloogle_stats.py b/bin/cloogle_stats.py
new file mode 100755
index 0000000..0c48b70
--- /dev/null
+++ b/bin/cloogle_stats.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python3
+import json
+import ssl
+import websocket
+
+def format_query(query):
+ if 'className' in query:
+ return 'class ' + query['className']
+ elif 'typeName' in query:
+ return 'type ' + query['typeName']
+ elif 'unify' in query:
+ if 'name' in query and query['name'] != '':
+ return query['name'] + ' :: ' + query['unify']
+ else:
+ return ':: ' + query['unify']
+ else:
+ return query['name']
+
+def on_message(ws, msg):
+ try:
+ print(format_query(json.loads(msg)))
+ except:
+ pass
+
+def on_error(ws, err):
+ print(err)
+
+def on_close(ws):
+ print('Closed.')
+
+if __name__ == '__main__':
+ ws = websocket.WebSocketApp('wss://cloogle.org:31216',
+ subprotocols=['cloogle-stats'],
+ on_message=on_message, on_error=on_error, on_close=on_close)
+ ws.run_forever(sslopt={'cert_reqs': ssl.CERT_NONE})
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()