from barpyrus import hlwm from barpyrus import widgets as W from barpyrus.core import Theme from barpyrus import lemonbar from barpyrus import conky import sys import os # set up connection to herbstluftwm in order to get events and to call # herbstclient commands hc = hlwm.connect() # get monitor geometry monitor = sys.argv[1] if len(sys.argv) >= 2 else 0 (x, y, monitor_w, monitor_h) = hc.monitor_rect(monitor) # height/width of the panel height = 16 if os.uname().nodename != 'warthog' else 30 width = monitor_w # set fonts used by lemonbar if os.uname().nodename == 'warthog': text_font = '*-*-lucidatypewriter-medium-*-*-*-26-*-*-*-*-*-*-*' symbol_font = '*-wuncon-siji-medium-r-normal-*-26-200-100-*-c-*-iso10646-1' else: text_font = '*-*-lucidatypewriter-medium-*-*-*-12-*-*-*-*-*-*-*' symbol_font = '*-wuncon-siji-medium-r-normal-*-12-100-100-*-c-80-iso10646-1' # create color-dict for often used colors color = { 'black': '#000000', 'grey': '#303030', 'lightgrey':'#989898', 'white': '#EFEFEF', 'orange': '#FFA500', 'yellow': '#FFFD00', 'green': '#19CB00', 'cyan': '#0DCDCD', 'lightblue':'#8470FF', 'blue': '#0026FF', 'magenta': '#CB1ED1', 'red': '#CC0403', } # function to create colored frames def frame(content, bg, fg, padding = (3, 3)): return Theme(bg = color[bg], fg = color[fg], padding = padding)(content) # get space for the panel hc(['pad', str(monitor), str(height)]) # initialize lemonbar bar = lemonbar.Lemonbar(geometry = (x, y, width, height), font = text_font, symbol_font = symbol_font) # widget configuration bar.widget = W.ListLayout([ W.RawLabel('%{l}'), hlwm.HLWMTags(hc, monitor, tag_renderer = hlwm.underlined_tags), W.RawLabel('%{c}'), hlwm.HLWMMonitorFocusLayout(hc, monitor, # this widget is shown on the focused monitor: frame(hlwm.HLWMWindowTitle(hc), 'grey', 'white'), # this widget is shown on all unfocused monitors: W.RawLabel('')), W.RawLabel('%{r}'), frame(W.DateTime('%d. %B, %H:%M'), 'grey', 'white'), ])