diff options
| author | Camil Staps | 2017-02-20 09:15:16 +0100 | 
|---|---|---|
| committer | Camil Staps | 2017-02-20 09:15:16 +0100 | 
| commit | b6189b101aa5142054f28a3940121c4134037554 (patch) | |
| tree | 0e1d9a4e2abbc2990eef77f94edb730fee192a58 | |
| parent | Update XC8 (diff) | |
Cloogle stats in status bar
| -rwxr-xr-x | bin/cloogle_stats.py | 35 | ||||
| -rwxr-xr-x | bin/i3status.py | 21 | 
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() | 
