98 lines
3.5 KiB
Python
98 lines
3.5 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
|
|
# Copy this config to ~/.config/barpyrus/config.py
|
|
|
|
# set up a connection to herbstluftwm in order to get events
|
|
# and in order to call herbstclient commands
|
|
hc = hlwm.connect()
|
|
|
|
# get the geometry of the monitor
|
|
monitor = sys.argv[1] if len(sys.argv) >= 2 else 0
|
|
(x, y, monitor_w, monitor_h) = hc.monitor_rect(monitor)
|
|
if os.uname().nodename == "warthog":
|
|
height = 30 # height of the panel
|
|
else:
|
|
height = 16 # height of the panel
|
|
|
|
width = monitor_w # width of the panel
|
|
hc(['pad', str(monitor), str(height)]) # get space for the panel
|
|
|
|
# An example conky-section:
|
|
# icons
|
|
bat_icons = [
|
|
0xe242, 0xe243, 0xe244, 0xe245, 0xe246,
|
|
0xe247, 0xe248, 0xe249, 0xe24a, 0xe24b,
|
|
]
|
|
# first icon: 0 percent
|
|
# last icon: 100 percent
|
|
bat_delta = 100 / len(bat_icons)
|
|
conky_text = '%{F\\#9fbc00}%{T2}\ue026%{T-}%{F\\#989898}${cpu}% '
|
|
conky_text += '%{F\\#9fbc00}%{T2}\ue021%{T-}%{F\\#989898}${memperc}% '
|
|
conky_text += '%{F\\#9fbc00}%{T2}\ue13c%{T-}%{F\\#989898}${downspeedf}K '
|
|
conky_text += '%{F\\#9fbc00}%{T2}\ue13b%{T-}%{F\\#989898}${upspeedf}K '
|
|
conky_text += "${if_existing /sys/class/power_supply/BAT0}"
|
|
conky_text += "%{T2}"
|
|
conky_text += "${if_match \"$battery\" == \"discharging $battery_percent%\"}"
|
|
conky_text += "%{F\\#FFC726}"
|
|
conky_text += "$else"
|
|
conky_text += "%{F\\#9fbc00}"
|
|
conky_text += "$endif"
|
|
for i,icon in enumerate(bat_icons[:-1]):
|
|
conky_text += "${if_match $battery_percent < %d}" % ((i+1)*bat_delta)
|
|
conky_text += chr(icon)
|
|
conky_text += "${else}"
|
|
conky_text += chr(bat_icons[-1]) # icon for 100 percent
|
|
for _ in bat_icons[:-1]:
|
|
conky_text += "${endif}"
|
|
conky_text += "%{T-} $battery_percent% "
|
|
conky_text += "${endif}"
|
|
conky_text += "%{F-}"
|
|
|
|
# example options for the 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'
|
|
|
|
# you can define custom themes
|
|
grey_frame = Theme(bg = '#303030', fg = '#EFEFEF', padding = (3,3))
|
|
|
|
# Widget configuration:
|
|
if os.uname().nodename == "warthog":
|
|
bar = lemonbar.Lemonbar(geometry = (x,y,width,height),
|
|
font = "*-*-lucidatypewriter-medium-*-*-*-26-*-*-*-*-*-*-*",
|
|
symbol_font = "-wuncon-siji-medium-r-normal--10-100-75-75-c-80-iso10646-1")
|
|
else:
|
|
bar = lemonbar.Lemonbar(geometry = (x,y,width,height),
|
|
font = "*-*-lucidatypewriter-medium-*-*-*-12-*-*-*-*-*-*-*",
|
|
symbol_font = "-wuncon-siji-medium-r-normal--10-100-75-75-c-80-iso10646-1")
|
|
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:
|
|
grey_frame(hlwm.HLWMWindowTitle(hc)),
|
|
# this widget is shown on all unfocused monitors:
|
|
conky.ConkyWidget('df /: ${fs_used_perc /}%')
|
|
),
|
|
W.RawLabel('%{r}'),
|
|
conky.ConkyWidget(text= conky_text),
|
|
# something like a tabbed widget with the tab labels '>' and '<'
|
|
W.ShortLongLayout(
|
|
W.RawLabel(''),
|
|
W.ListLayout([
|
|
hlwm.HLWMLayoutSwitcher(hc, xkblayouts, command = setxkbmap.split(' ')),
|
|
W.RawLabel(' '),
|
|
])),
|
|
grey_frame(W.DateTime('%d. %B, %H:%M')),
|
|
])
|
|
|
|
|