summaryrefslogtreecommitdiffstats
path: root/powerline/bindings/lemonbar/powerline-lemonbar.py
diff options
context:
space:
mode:
Diffstat (limited to 'powerline/bindings/lemonbar/powerline-lemonbar.py')
-rwxr-xr-xpowerline/bindings/lemonbar/powerline-lemonbar.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/powerline/bindings/lemonbar/powerline-lemonbar.py b/powerline/bindings/lemonbar/powerline-lemonbar.py
new file mode 100755
index 0000000..9511f28
--- /dev/null
+++ b/powerline/bindings/lemonbar/powerline-lemonbar.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+# vim:fileencoding=utf-8:noet
+from __future__ import (unicode_literals, division, absolute_import, print_function)
+
+import time
+import re
+import subprocess
+
+from threading import Lock, Timer
+
+from powerline.lemonbar import LemonbarPowerline
+from powerline.commands.lemonbar import get_argparser
+from powerline.bindings.wm import get_connected_xrandr_outputs
+
+
+if __name__ == '__main__':
+ parser = get_argparser()
+ args = parser.parse_args()
+
+ powerline = LemonbarPowerline()
+ powerline.update_renderer()
+ bars = []
+
+ for screen in get_connected_xrandr_outputs(powerline.pl):
+ command = [args.bar_command, '-g', '{0}x{1}+{2}+{3}'.format(screen['width'], args.height, screen['x'], screen['y'])] + args.args[1:]
+ process = subprocess.Popen(command, stdin=subprocess.PIPE)
+ bars.append((screen['name'], process, int(screen['width']) / 5))
+
+ lock = Lock()
+ modes = ['default']
+
+ def render(reschedule=False):
+ if reschedule:
+ Timer(args.interval, render, kwargs={'reschedule': True}).start()
+
+ global lock
+ with lock:
+ for output, process, width in bars:
+ process.stdin.write(powerline.render(mode=modes[0], width=width, matcher_info=output).encode('utf-8') + b'\n')
+ process.stdin.flush()
+
+ def update(evt):
+ modes[0] = evt.change
+ render()
+
+ render(reschedule=True)
+
+ if args.i3:
+ try:
+ import i3ipc
+ except ImportError:
+ import i3
+ i3.Subscription(lambda evt, data, sub: render(), 'workspace')
+ else:
+ conn = i3ipc.Connection()
+ conn.on('workspace::focus', lambda conn, evt: render())
+ conn.on('mode', lambda conn, evt: update(evt))
+ conn.main()
+
+ while True:
+ time.sleep(1e8)