# -*- python -*- # A simple xpybar configuration for replacing dzen2 import sys import threading from util import * import Xlib.X, Xlib.protocol.event OUTPUT, HEIGHT, YPOS, TOP = 0, 12, 0, True text = '' start_ = start def start(): start_() bar.clear() get_display().flush() def refresh(): global text try: text = input() except: sys.exit(0) bar.invalidate() async(lambda : forever(refresh)) def redraw(): global text buf, esc = '', None for c in text: if esc is not None: esc += c if esc == '^': buf += '^' esc = None elif esc[-1] == ')': if esc.startswith('bg(') or esc.startswith('fg('): c = 4 if esc.startswith('bg(') else 3 esc = esc[3 : -1] if esc == '': buf += '\033[%i9m' % c else: r, g, b = esc[1 : 3], esc[3 : 5], esc[5 : 7] r, g, b = int(r, 16), int(g, 16), int(b, 16) r, g, b = str(r), str(g), str(b) buf += '\033[%i8;2;%sm' % (c, ';'.join([r, g, b])) esc = None elif c == '^': esc = '' else: buf += c bar.clear() bar.draw_coloured_text(0, 10, 0, 2, buf)