# -*- python -*- ''' xpybar – xmobar replacement written in python Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Mattias Andrée (maandree@kth.se) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ''' # A simple xpybar configuration for replacing dzen2 import sys import threading from util import * OUTPUT, HEIGHT, YPOS, TOP = 0, 12, 0, True text = '' start_ = start def start(): start_() bar.clear() get_display().flush() def refresh(): global text try: text = input() except: sys.exit(0) bar.invalidate() xasync(lambda : forever(refresh)) def redraw(): global text 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) # TODO add workspace switching and layout rotation