62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
# vim:fileencoding=utf-8:noet
|
|
from __future__ import (unicode_literals, division, absolute_import, print_function)
|
|
|
|
from libqtile.bar import CALCULATED
|
|
from libqtile.widget import TextBox
|
|
|
|
from powerline import Powerline
|
|
|
|
|
|
class QTilePowerline(Powerline):
|
|
def do_setup(self, obj):
|
|
obj.powerline = self
|
|
|
|
|
|
class PowerlineTextBox(TextBox):
|
|
# TODO Replace timeout argument with update_interval argument in next major
|
|
# release.
|
|
def __init__(self, timeout=2, text=b' ', width=CALCULATED, side='right', update_interval=None, **config):
|
|
super(PowerlineTextBox, self).__init__(text, width, **config)
|
|
self.side = side
|
|
self.update_interval = update_interval or timeout
|
|
self.did_run_timer_setup = False
|
|
powerline = QTilePowerline(ext='wm', renderer_module='pango_markup')
|
|
powerline.setup(self)
|
|
|
|
def update(self):
|
|
if not self.configured:
|
|
return True
|
|
self.text = self.powerline.render(side=self.side).encode('utf-8')
|
|
self.bar.draw()
|
|
return True
|
|
|
|
def cmd_update(self, text):
|
|
self.update(text)
|
|
|
|
def cmd_get(self):
|
|
return self.text
|
|
|
|
def timer_setup(self):
|
|
if not self.did_run_timer_setup:
|
|
self.did_run_timer_setup = True
|
|
self.timeout_add(self.update_interval, self.update)
|
|
|
|
def _configure(self, qtile, bar):
|
|
super(PowerlineTextBox, self)._configure(qtile, bar)
|
|
if self.layout.markup:
|
|
# QTile-0.9.1: no need to recreate layout or run timer_setup
|
|
return
|
|
self.layout = self.drawer.textlayout(
|
|
self.text,
|
|
self.foreground,
|
|
self.font,
|
|
self.fontsize,
|
|
self.fontshadow,
|
|
markup=True,
|
|
)
|
|
self.timer_setup()
|
|
|
|
|
|
# TODO: Remove this at next major release
|
|
Powerline = PowerlineTextBox
|