diff options
| author | Mattias Andrée <maandree@operamail.com> | 2014-06-13 01:27:15 +0200 | 
|---|---|---|
| committer | Mattias Andrée <maandree@operamail.com> | 2014-06-13 01:27:15 +0200 | 
| commit | 467f2fe4c53f30c2a7f7da17918c782dbe99ca00 (patch) | |
| tree | 52f0e7178358431e06c095405fb136d62c89c857 /examples | |
| parent | remove old imports (diff) | |
| download | xpybar-467f2fe4c53f30c2a7f7da17918c782dbe99ca00.tar.gz xpybar-467f2fe4c53f30c2a7f7da17918c782dbe99ca00.tar.bz2 xpybar-467f2fe4c53f30c2a7f7da17918c782dbe99ca00.tar.xz  | |
demo combination of linereading and clock
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/mixed | 64 | 
1 files changed, 64 insertions, 0 deletions
diff --git a/examples/mixed b/examples/mixed new file mode 100644 index 0000000..5770dc8 --- /dev/null +++ b/examples/mixed @@ -0,0 +1,64 @@ +# -*- python -*- + +# A simple xpybar configuration that mixes linereading with a clock + +import sys +import threading + +from util import * + +from plugins.clock import Clock + + +OUTPUT, HEIGHT, YPOS, TOP = 0, 12, 0, True + +text = '' +clock_ = Clock(format = '%Y-(%m)%b-%d %T, %a w%V, %Z', sync_to = 0.5) + +class Clocked: +    def __init__(self, *args): +        self.sometimes = Sometimes(*args) +        self.text = self.sometimes() +    def __call__(self, update = False): +        if update: +            self.text = self.sometimes() +        return self.text + +functions = [ lambda : text  +            , Clocked(clock_.read, 1) +            ] + +pattern = '%s \0 %s' + +start_ = start +def start(): +    start_() +     +    def read_stdin(): +        global text +        try: +            text = input() +        except: +            sys.exit(0) +        bar.invalidate() +     +    def update_per_clock(): +        for f in functions: +            if isinstance(f, Clocked): +                f(True) +        bar.invalidate() +     +    async(lambda : forever(read_stdin)) +    async(lambda : clock_.continuous_sync(update_per_clock)) + + +semaphore = threading.Semaphore() +def redraw(): +    if semaphore.acquire(blocking = False): +        try: +            values = pattern % tuple(f() for f in functions) +            bar.partial_clear(0, bar.width, 10, 0, 2, values) +            bar.draw_coloured_splitted_text(0, bar.width, 10, 0, 2, values) +        finally: +            semaphore.release() +  | 
