You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

61 lines
1.4 KiB

#!/usr/bin/env sh
trap "update" USR1
pgrep -f sxmo_statusbar.sh | grep -v $$ | xargs kill -9
update() {
# In-call.. show length of call
CALLINFO=" "
if pgrep -f sxmo_modemcall.sh; then
NOWS="$(date +"%s")"
CALLSTARTS="$(date +"%s" -d "$(
grep -aE 'call_start|call_pickup' "$XDG_DATA_HOME"/sxmo/modem/modemlog.tsv |
tail -n1 |
cut -f1
)")"
CALLSECONDS="$(echo "$NOWS" - "$CALLSTARTS" | bc)"
CALLINFO=" ${CALLSECONDS}s "
fi
# W symbol if wireless is connect
WIRELESS=""
WLANSTATE="$(tr -d "\n" < /sys/class/net/wlan0/operstate)"
if [ "$WLANSTATE" = "up" ]; then
WIRELESS="W "
fi
# M symbol if modem monitoring is on & modem present
MODEMMON=""
pgrep -f sxmo_modemmonitor.sh && MODEMMON="M "
# Battery pct
PCT="$(cat /sys/class/power_supply/*-battery/capacity)"
BATSTATUS="$(
cat /sys/class/power_supply/*-battery/status |
cut -c1
)"
# Volume
AUDIODEV="$(sxmo_audiocurrentdevice.sh)"
[ "$AUDIODEV" = "None" ] && VOL="" || VOL=$(echo "$AUDIODEV" | cut -c1 | tr L S)"$(
amixer sget "$AUDIODEV" |
grep -oE '([0-9]+)%' |
tr -d ' %' |
awk '{ s += $1; c++ } END { print s/c }' |
xargs printf %.0f
)"
# Time
TIME="$(date +%R)"
BAR="${CALLINFO}${MODEMMON}${WIRELESS}${VOL} ${BATSTATUS}${PCT}% ${TIME}"
xsetroot -name "$BAR"
}
# E.g. on first boot justs to make sure the bar comes in quickly
update && sleep 1 && update && sleep 1
while :
do
update
sleep 30 & wait
done