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() + |