53 lines
1.0 KiB
Python
53 lines
1.0 KiB
Python
#!/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))
|