From e75250ac9f2ea0ad557fe971a263842c0717b80f Mon Sep 17 00:00:00 2001 From: spinach <19keegandeppe@gmail.com> Date: Mon, 17 Apr 2023 13:24:23 -0400 Subject: [PATCH] cleaned up some code and reduced calls to upower --- device_battery.sh | 82 ++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 43 deletions(-) diff --git a/device_battery.sh b/device_battery.sh index 708e246..47784f3 100755 --- a/device_battery.sh +++ b/device_battery.sh @@ -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,46 +87,20 @@ 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 - echo "$CHARGING_COLOR" - elif [ $2 -le $LOW_BATTERY_THRESHOLD ] ; then - echo "$LOW_BATTERY_COLOR" - fi + # sets battery color; level in $1, state in $2 + if [ "$2" == "charging" ] ; then + echo "$CHARGING_COLOR" + elif [ $1 -le $LOW_BATTERY_THRESHOLD ] ; then + echo "$LOW_BATTERY_COLOR" fi } @@ -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