1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | #!/bin/bash
# -------------------------------------------- VARIABLES
FG_COLOR="#aaaaaa"
BG_COLOR="#111111"
WIDTH=700
HEIGHT=16
X=700
Y=0
TEXT_ALIGNMENT="right"
FONT="-*-terminus-*-r-*-*-*-*-*-*-*-*-*-*"
ICON_COLOR="#78a4ff"
SEP="^fg(#2a2a2a) | ^fg()"
BAR_STYLE="-w 33 -h 10 -s o -ss 1 -sw 4 -nonl"
BAR_FG_COLOR=$FG_COLOR
BAR_BG_COLOR="#333333"
NOW_PLAYING_ICON="/home/rolf/.icons/dzen/note.xbm"
NOW_PLAYING_FORMAT="%a - %t"
BATTERY_CHARGING_ICON="/home/rolf/.icons/dzen/bat_full_01.xbm"
BATTERY_DISCHARGING_ICON="/home/rolf/.icons/dzen/bat_low_01.xbm"
BATTERY_MISSING_ICON="/home/rolf/.icons/dzen/ac_01.xbm"
BATTERY_CRITICAL_PERCENTAGE=10
BATTERY_CRITICAL_FG_COLOR="#220000"
BATTERY_CRITICAL_BG_COLOR="#660000"
WIRELESS_ICON="/home/rolf/.icons/dzen/wifi_01.xbm"
WIRELESS_CLIENT="wicd-client"
VOLUME_ICON="/home/rolf/.icons/dzen/spkr_01.xbm"
CLOCK_ICON="/home/rolf/.icons/dzen/clock.xbm"
CLOCK_FORMAT="%H:%M"
# -------------------------------------------- FUNCTIONS
icon() {
echo "^fg($ICON_COLOR)^i($1)^fg()"
}
bar() {
echo $1 | gdbar $BAR_STYLE -fg $BAR_FG_COLOR -bg $BAR_BG_COLOR
}
now_playing() {
ncmpcpp --now-playing "$NOW_PLAYING_FORMAT"
}
battery_icon() {
if [ "$battery_status" == "Charging" ]; then
icon "$BATTERY_CHARGING_ICON"
elif [ "$battery_status" == "Discharging" ]; then
icon "$BATTERY_DISCHARGING_ICON"
else
icon "$BATTERY_MISSING_ICON"
fi
}
battery_percentage() {
percentage=$(acpi -b | cut -d "," -f 2 | tr -d " %")
if [ -z "$percentage" ]; then
echo "AC"
elif [ $percentage -le $BATTERY_CRITICAL_PERCENTAGE ] && [ $battery_status == "Discharging" ]; then
echo 100 | gdbar $BAR_STYLE -fg $BATTERY_CRITICAL_FG_COLOR -bg $BATTERY_CRITICAL_BG_COLOR
else
bar "$percentage"
fi
}
battery() {
battery_status=$(acpi -b | cut -d ' ' -f 3 | tr -d ',')
echo $(battery_icon) $(battery_percentage)
}
wireless_quality() {
quality_bar=$(bar "$(cat /proc/net/wireless | grep wlan0 | cut -d ' ' -f 6 | tr -d '.')")
echo "^ca(3, $WIRELESS_CLIENT)$quality_bar^ca()"
}
volume() {
volume=$(amixer get Master | egrep -o "[0-9]+%" | tr -d "%")
echo -n "^ca(1, amixer -q set Master 5%-)^ca(3, amixer -q set Master 5%+)^ca(2, amixer -q set Master toggle)"
if [ -z "$(amixer get Master | grep "\[on\]")" ]; then
echo -n "$(echo $volume | gdbar $BAR_STYLE -bg $BAR_BG_COLOR -fg $BAR_BG_COLOR)"
else
echo -n "$(bar $volume)"
fi
echo "^ca()^ca()^ca()"
}
clock() {
echo $(date +$CLOCK_FORMAT)
}
# -------------------------------------------- SCRIPT EXECUTION LOOP, PIPED INTO DZEN2
while :; do
echo -n "$(icon $NOW_PLAYING_ICON) $(now_playing)$SEP"
echo -n "$(battery)$SEP"
echo -n "$(icon $WIRELESS_ICON) $(wireless_quality)$SEP"
echo -n "$(icon $VOLUME_ICON) $(volume)$SEP"
echo "$(icon $CLOCK_ICON) $(clock) "
sleep 3
done | dzen2 -fg $FG_COLOR -bg $BG_COLOR -ta $TEXT_ALIGNMENT -w $WIDTH -h $HEIGHT -x $X -y $Y -fn $FONT
|
x
Notes
Some features, with the default variables:
- The battery bar becomes red when under 10%.
- The volume bar becomes dark gray when muted.
- The wireless bar spawns wicd-client when right-clicked.
- The volume bar decreases when left-clicked, increases when right-clicked and mutes when middle-clicked.
Requirements:
- dzen2 0.9.5
- gdbar (for battery, wireless and volume)
- ALSA (for volume)
- mpd/ncmpcpp (for now playing)
I can still think of some stuff to add, but I’m satisfied enough for now.
Hope you enjoy!
dmatlack said about 9 years ago
Where did you get the icons?
foozer said about 9 years ago
@dmatlack: https://github.com/Ramblurr/dotfiles/tree/master/home/.dzen2/icons