diff options
Diffstat (limited to 'examples/xmonad')
| -rw-r--r-- | examples/xmonad | 67 | 
1 files changed, 26 insertions, 41 deletions
diff --git a/examples/xmonad b/examples/xmonad index cd6e623..056eb50 100644 --- a/examples/xmonad +++ b/examples/xmonad @@ -26,50 +26,35 @@ def start():              text = input()          except:              sys.exit(0) -        # Dummy event for performing update in the main thread # TODO do this better -        e = Xlib.protocol.event.KeyPress(detail = 1, -                                         time = Xlib.X.CurrentTime, -                                         root = get_display().screen().root, -                                         window = bar.window, -                                         child = Xlib.X.NONE, -                                         root_x = 1, root_y = 1, -                                         event_x = 1, event_y = 1, -                                         state = 0, same_screen = 1) -        get_display().send_event(bar.window, e) -        get_display().flush() +        bar.invalidate()      async(lambda : forever(refresh)) -semaphore = threading.Semaphore()  def redraw():      global text -    if semaphore.acquire(blocking = False): -        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) -        semaphore.release() -        return True -    return False +    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)  | 
