|
|
|
@ -22,7 +22,7 @@ MOUSE_ICON=$(echo -e '\Uf098b') # bt mouse
|
|
|
|
|
HEADSET_ICON=$(echo -e '\Uf0970')
|
|
|
|
|
|
|
|
|
|
battery_icon() {
|
|
|
|
|
# grabs corresponding battery level icon
|
|
|
|
|
# grabs corresponding battery level icon; state in 2, level in 1
|
|
|
|
|
if [ "$2" == "charging" ] ; then
|
|
|
|
|
# mouse is charging, battery icon represents
|
|
|
|
|
if [ $1 -gt 95 ] ; then
|
|
|
|
@ -87,47 +87,21 @@ identifier() {
|
|
|
|
|
# returns device name or icon based on options; dev in $1
|
|
|
|
|
|
|
|
|
|
if [ -n "$DEV_ICON" ] ; then
|
|
|
|
|
if [ -n "$(upower -i "$1" | grep 'mouse')" ] ; then
|
|
|
|
|
printf '%s ' "$MOUSE_ICON"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -n "$(upower -i "$1" | grep 'headset')" ] ; then
|
|
|
|
|
printf '%s ' "$HEADSET_ICON"
|
|
|
|
|
fi
|
|
|
|
|
[[ "$1" =~ [Mm]ouse ]] && echo "$MOUSE_ICON"
|
|
|
|
|
[[ "$1" =~ [Hh]eadset ]] && echo "$HEADSET_ICON"
|
|
|
|
|
else
|
|
|
|
|
printf '%s' "$(upower -i "$1" | grep 'model:' | awk '{print $2}')"
|
|
|
|
|
echo "$1" | grep 'model:' | awk '{print $2}'
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
battery() {
|
|
|
|
|
# gets device battery level; dev in $1
|
|
|
|
|
|
|
|
|
|
level=$(upower -i "$1" | grep 'percentage:' | awk '{print $2}' | tr -d '%')
|
|
|
|
|
state=$(upower -i "$1" | grep 'state:' | awk '{print $2}')
|
|
|
|
|
|
|
|
|
|
if [ "$state" == "unknown" ] ; then
|
|
|
|
|
# override to always show if device asleep
|
|
|
|
|
echo -e '\Uf04b2 ' && exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
color "$state" $level
|
|
|
|
|
|
|
|
|
|
if [ -n "$BATTERY_ICON" ] ; then
|
|
|
|
|
battery_icon $level "$state"
|
|
|
|
|
else
|
|
|
|
|
printf '%d%%' $level
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
color() {
|
|
|
|
|
# sets battery color based on passed params
|
|
|
|
|
if [ -n "$COLOR" ] ; then
|
|
|
|
|
if [ "$1" == "charging" ] ; then
|
|
|
|
|
# sets battery color; level in $1, state in $2
|
|
|
|
|
if [ "$2" == "charging" ] ; then
|
|
|
|
|
echo "$CHARGING_COLOR"
|
|
|
|
|
elif [ $2 -le $LOW_BATTERY_THRESHOLD ] ; then
|
|
|
|
|
elif [ $1 -le $LOW_BATTERY_THRESHOLD ] ; then
|
|
|
|
|
echo "$LOW_BATTERY_COLOR"
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# parsing long args
|
|
|
|
@ -173,14 +147,36 @@ while getopts "hcidb" opt ; do
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# go through devs
|
|
|
|
|
devs=$(upower -e | grep -v "DisplayDevice") # don't use the monitor
|
|
|
|
|
|
|
|
|
|
for dev in $devs; do
|
|
|
|
|
for dev in `upower -e | grep -v 'DisplayDevice'`; do
|
|
|
|
|
# allows proper spacing
|
|
|
|
|
devs+=1
|
|
|
|
|
# getting device info
|
|
|
|
|
dev_id=$(identifier "$dev")
|
|
|
|
|
dev_battery=$(battery "$dev")
|
|
|
|
|
info=$(upower -i "$dev")
|
|
|
|
|
state=$(echo "$info" | awk '{if($1 == "state:"){print $2}}')
|
|
|
|
|
|
|
|
|
|
dev_id=$(identifier "$info")
|
|
|
|
|
dev_battery=`echo "$info" | awk '{if($1 == "percentage:"){print $2}}'`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ -n "$COLOR" ] ; then
|
|
|
|
|
clr=$(color `echo $dev_battery | tr -d '%'` "$state")
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -n "$BATTERY_ICON" ] ; then
|
|
|
|
|
dev_battery=$(battery_icon `echo $dev_battery | tr -d '%'` "$state")
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ "$state" == "unknown" ] ; then
|
|
|
|
|
# override to always show if device asleep
|
|
|
|
|
if [ -n "$DEV_ICON" ] ; then
|
|
|
|
|
printf '%s %s' "$dev_id" `echo -e '\Uf04b2 '` && continue
|
|
|
|
|
else
|
|
|
|
|
printf '%s %s' "$dev_id" '?' && continue
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# seperator
|
|
|
|
|
[ $devs -gt 1 ] & printf ' '
|
|
|
|
|
|
|
|
|
|
printf ' %s %s' "$dev_id" "$dev_battery"
|
|
|
|
|
printf '%s %s%s' "$dev_id" "$clr" "$dev_battery"
|
|
|
|
|
done
|
|
|
|
|
echo
|
|
|
|
|