aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TODO2
-rw-r--r--examples/mixed64
2 files changed, 65 insertions, 1 deletions
diff --git a/TODO b/TODO
index 8286919..68ef4c9 100644
--- a/TODO
+++ b/TODO
@@ -66,6 +66,7 @@ List of plugins to implement:
Demo plugins:
+ linereader
snmp6
snmp
softirqs
@@ -73,4 +74,3 @@ Demo plugins:
vmstat
weather
-Demo combination of linereader and clock
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()
+