dotfiles/config/barpyrus/config.py
Thomas Preisner 35d203b5cd config: barpyrus: config.py: add conky_icon function for easy formatting
In order to not having to repeat the same string sequence over and over
again there now is a helper method which does exactly this.
2018-03-02 21:03:06 +01:00

95 lines
2.9 KiB
Python

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)
# function to insert colored icon into conky_text
def conky_icon(icon_code, icon_color, text_color = 'lightgrey'):
text = '%{F\\' + color[icon_color] + '}%{T2}' + icon_code + '%{T-}'
text += '%{F\\' + color[text_color] + '}'
return text
# conky specific configuration
conky_text = ''
# options for hlwm.HLWMLayoutSwitcher widget
xkblayouts = [
'us us -variant altgr-intl us'.split(' '),
'de de de'.split(' '),
]
setxkbmap = 'setxkbmap -option compose:menu -option ctrl:nocaps'
setxkbmap += ' -option compose:ralt -option compose:rctrl'
# 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}'),
conky.ConkyWidget(text = conky_text),
W.ShortLongLayout(
W.RawLabel(''),
W.ListLayout([
hlwm.HLWMLayoutSwitcher(hc, xkblayouts, command = setxkbmap.split(' ')),
W.RawLabel(' '),
])
),
frame(W.DateTime('%d. %B, %H:%M'), 'grey', 'white'),
])