diff options
Diffstat (limited to 'examples/xmonad')
-rw-r--r-- | examples/xmonad | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/examples/xmonad b/examples/xmonad new file mode 100644 index 0000000..0c6700f --- /dev/null +++ b/examples/xmonad @@ -0,0 +1,80 @@ +# -*- python -*- + +# A simple xpybar configuration for replacing dzen2 + +import sys +import threading + +from util import * + + +OUTPUT, HEIGHT, YPOS, TOP = 0, 12, 0, True + +text = '' + +start_ = start +create = [] # FIXME this should not be required!! +def start(): + start_() + bar.create_colour(0x90, 0x90, 0x90) # FIXME this should not be required!! + bar.create_colour(0x60, 0x60, 0x60) + bar.create_colour(0x30, 0x30, 0x30) + def refresh(): + global text + text_ = None + try: + text_ = input() + except: + sys.exit(0) + 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('): + esc = esc[3 : -1] + if esc == '': + buf += '\033[49m' + 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) + create.append((r, g, b)) + r, g, b = str(r), str(g), str(b) + buf += '\033[48;2;%sm' % ';'.join([r, g, b]) + elif esc.startswith('fg('): + esc = esc[3 : -1] + if esc == '': + buf += '\033[39m' + 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) + create.append((r, g, b)) + r, g, b = str(r), str(g), str(b) + buf += '\033[38;2;%sm' % ';'.join([r, g, b]) + esc = None + elif c == '^': + esc = '' + else: + buf += c + text = buf + if redraw(): + get_display().flush() + async(lambda : forever(refresh)) + + +semaphore = threading.Semaphore() +def redraw(): + global create + if semaphore.acquire(blocking = False): + for r, g, b in create: + bar.create_colour(r, g, b) + create = [] + bar.clear() + bar.draw_coloured_text(0, 10, 0, 2, text) + semaphore.release() + return True + return False + |