# -*- python -*- import os from common import * class MyNews(Entry): def __init__(self, *args, status_path = None, **kwargs): if status_path is not None: self.status_path = status_path else: self.status_path = HOME + '/.var/lib/featherweight/status' self.get_news() Entry.__init__(self, *args, **kwargs) xasync(self.refresh, name = 'news') def action(self, col, button, x, y): if button == LEFT_BUTTON: xasync(lambda : subprocess.Popen([G.TERMINAL, '-e', 'featherweight']).wait()) elif button == RIGHT_BUTTON: xasync(lambda : subprocess.Popen(['featherweight', '--update', '--system']).wait()) def get_news(self): try: with open(self.status_path, 'rb') as file: status = int(file.read().decode('utf-8', 'replace').replace('\n', '')) except: status = 0 colour = '31' if status <= 0: colour = '39' elif status <= 5: colour = '32' elif status <= 10: colour = '33' self.text = 'News: \033[%sm%i\033[0m' % (colour, status) def refresh(self): while True: if os.path.exists(self.status_path): try: spawn_read(*pdeath('HUP', 'inotifywait', self.status_path, '-e', 'close_write')) self.get_news() except: time.sleep(1) else: time.sleep(1) def function(self): return self.text