summaryrefslogtreecommitdiffstats
path: root/powerline/bindings/i3/powerline-i3.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 16:40:16 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 16:40:16 +0000
commit3f25952c13d5847d510c0cae22a8ba876638d570 (patch)
tree02f505f016ed5a1029277dcae520d5e2a75906fb /powerline/bindings/i3/powerline-i3.py
parentInitial commit. (diff)
downloadpowerline-upstream.tar.xz
powerline-upstream.zip
Adding upstream version 2.8.3.upstream/2.8.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'powerline/bindings/i3/powerline-i3.py')
-rwxr-xr-xpowerline/bindings/i3/powerline-i3.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/powerline/bindings/i3/powerline-i3.py b/powerline/bindings/i3/powerline-i3.py
new file mode 100755
index 0000000..f44e928
--- /dev/null
+++ b/powerline/bindings/i3/powerline-i3.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+# vim:fileencoding=utf-8:noet
+from __future__ import (unicode_literals, division, absolute_import, print_function)
+
+import sys
+import time
+
+from threading import Lock
+
+from powerline.bindings.wm import get_i3_connection, i3_subscribe
+
+from powerline import Powerline
+from powerline.lib.monotonic import monotonic
+
+
+class I3Powerline(Powerline):
+ '''Powerline child for i3bar
+
+ Currently only changes the default log target.
+ '''
+ default_log_stream = sys.stderr
+
+
+if __name__ == '__main__':
+ name = 'wm'
+ if len(sys.argv) > 1:
+ name = sys.argv[1]
+
+ powerline = I3Powerline(name, renderer_module='i3bar')
+ powerline.update_renderer()
+
+ interval = 0.5
+
+ print ('{"version": 1}')
+ print ('[')
+ print ('[]')
+
+ lock = Lock()
+
+ def render(event=None, data=None, sub=None):
+ global lock
+ with lock:
+ print (',[' + powerline.render()[:-1] + ']')
+ sys.stdout.flush()
+
+ i3 = get_i3_connection()
+ i3_subscribe(i3, 'workspace', render)
+
+ while True:
+ start_time = monotonic()
+ render()
+ time.sleep(max(interval - (monotonic() - start_time), 0.1))