126 lines
3 KiB
Bash
Executable file
126 lines
3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
FIFO="/tmp/bar.fifo"
|
|
|
|
FORMAT_LEFT="%(music)s %(services)s %(diskspace)s"
|
|
FORMAT_RIGHT="%(wifi)s %(battery)s %(clock)s "
|
|
|
|
icon_color="#A0A57E"
|
|
icon() { echo -n "%{F$icon_color}"; printf '%b' "\ue$1"; echo -n "%{F-}"; }
|
|
|
|
icon_music=$(icon 05c)
|
|
icon_music_paused=$(icon 059)
|
|
icon_services=$(icon 040)
|
|
icon_diskspace=$(icon 0ab)
|
|
icon_wifi=$(icon 048)
|
|
icon_battery=$(icon 033)
|
|
icon_battery_charging=$(icon 042)
|
|
icon_clock=$(icon 018)
|
|
icon_updates=$(icon 060)
|
|
|
|
color_service_running="#A0A57E"
|
|
color_service_stopped="#C37561"
|
|
color_battery_good="white"
|
|
color_battery_low="#C37561"
|
|
|
|
music() {
|
|
info=$(mpc current -f '[%title%]')
|
|
icon=$icon_music
|
|
if [ -n "$info" ]; then
|
|
if [ -n "$(mpc status | grep paused)" ]; then
|
|
icon=$icon_music_paused
|
|
fi
|
|
echo -n "%{A:I "music 20":}$icon $info%{A}"
|
|
else
|
|
echo -n "$icon (-)"
|
|
fi
|
|
}
|
|
|
|
serviceinfo() {
|
|
service=$1
|
|
text=$2
|
|
systemctl is-active -q $service
|
|
if [ "$?" -eq 0 ]; then
|
|
echo -n "%{F$color_service_running}$text%{F-}"
|
|
else
|
|
echo -n "%{F$color_service_stopped}$text%{F-}"
|
|
fi
|
|
}
|
|
|
|
services() {
|
|
echo -n "$icon_services $(serviceinfo zomnet z) $(serviceinfo docker d)"
|
|
}
|
|
|
|
diskspace() {
|
|
info=$(./cmdcache.sh 10 "df -h /" | awk '{if($6 == "/") { print $5 }}')
|
|
echo -n "%{A:I "filesystem 30":}$icon_diskspace $info%{A}"
|
|
}
|
|
|
|
wifi() {
|
|
info=$(wicd-cli --wireless --status | perl -e 'foreach $line (<>) { if($line =~ /Connected to (.+) at .+IP: ([0-9.]+)/ ) { print $1; break; } elsif($line =~ /Connecting to wireless network \"(.+)\"/) { print $1 . " - connecting"; break; } }')
|
|
if [ -z "$info" ]; then
|
|
info="(-)"
|
|
fi
|
|
echo -n "%{A:I "network 1061":}$icon_wifi $info%{A}"
|
|
}
|
|
|
|
battery() {
|
|
level=$(./cmdcache.sh 5 "acpi -b" | awk -F, 'BEGIN { s=0 } { s+=$2 } END { print int(s/NR) }')
|
|
charging=$(acpi -a | grep on-line)
|
|
|
|
icon=$icon_battery
|
|
if [ -n "$charging" ]; then
|
|
icon=$icon_battery_charging
|
|
fi
|
|
info="%{F$color_battery_good}$level%%{F-}"
|
|
if [ "$level" -lt 20 ]; then
|
|
info="%{F$color_battery_low}$level%%{F-}"
|
|
fi
|
|
|
|
echo -n "%{A:I 'battery 1061':}$icon $info%{A}"
|
|
}
|
|
|
|
clock() {
|
|
info=$(date +"%H:%M")
|
|
echo -n "%{A:I "clock 1061":}$icon_clock $info%{A}"
|
|
}
|
|
|
|
updates() {
|
|
updates=$(./cmdcache.sh 20 ./pkginfo.sh)
|
|
echo -n "$icon_updates $updates"
|
|
}
|
|
|
|
run_handler() {
|
|
while read type param; do
|
|
case $type in
|
|
I)
|
|
./barinfo.sh kill
|
|
./barinfo.sh $param &
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
run_worker() {
|
|
SLEEP=$1
|
|
TAG=$2
|
|
COMMAND=$3
|
|
( while true; do
|
|
echo -n "$TAG "
|
|
$COMMAND
|
|
echo
|
|
sleep $SLEEP
|
|
done > $FIFO ) &
|
|
}
|
|
|
|
cd $(dirname $0)
|
|
|
|
[ -e "$FIFO" ] && rm -f $FIFO
|
|
mkfifo $FIFO
|
|
|
|
|
|
run_worker 1 clock clock
|
|
run_worker 5 battery battery
|
|
|
|
( while true; do cat $FIFO; done ) | python ./barformatter.py "$FORMAT_LEFT" "$FORMAT_RIGHT" # | lemonbar -g 1366x15 -f "Stlarch:size=6:style=regular" -f "Terminus:size=8" -B "#88000000" | run_handler
|
|
|