You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.1 KiB
Bash
53 lines
1.1 KiB
Bash
#!/bin/bash
|
|
|
|
ICON_BLUETOOTH=""
|
|
ICON_BATTERY_FULL=" "
|
|
ICON_BATTERY_THREE_QUARTERS=" "
|
|
ICON_BATTERY_HALF=" "
|
|
ICON_BATTERY_QUARTER=" "
|
|
ICON_BATTERY_EMPTY=" "
|
|
BLUETOOTH_BATTERY_STATUS=~/.config/waybar/scripts/bt-bat-status.sh
|
|
|
|
tooltip=""
|
|
|
|
statuses="$($BLUETOOTH_BATTERY_STATUS)"
|
|
if [[ $? != 0 ]]; then
|
|
exit 1
|
|
fi
|
|
|
|
|
|
n=0
|
|
sum=0
|
|
IFS=$'\n'
|
|
for status in $statuses; do
|
|
uuid=$(echo "$status" | cut -d' ' -f1)
|
|
name=$(bluetoothctl info "$uuid" | grep -oe 'Name: .*' | awk 'match($0, "Name: (.*)", m){print m[1]}')
|
|
percent=$(echo "$status" | cut -d' ' -f2 | grep -oe '[0-9]*')
|
|
|
|
tooltip="$tooltip$name: $percent%\n"
|
|
|
|
n=$((n+1))
|
|
sum=$((sum+percent))
|
|
done
|
|
IFS=' '
|
|
|
|
avg=$((sum / n))
|
|
|
|
ICON_BATTERY=""
|
|
if [[ $avg -ge 90 ]]; then
|
|
ICON_BATTERY=$ICON_BATTERY_FULL
|
|
elif [[ $avg -ge 75 ]]; then
|
|
ICON_BATTERY=$ICON_BATTERY_THREE_QUARTERS
|
|
elif [[ $avg -ge 50 ]]; then
|
|
ICON_BATTERY=$ICON_BATTERY_HALF
|
|
elif [[ $avg -ge 25 ]]; then
|
|
ICON_BATTERY=$ICON_BATTERY_QUARTER
|
|
else
|
|
ICON_BATTERY=$ICON_BATTERY_EMPTY
|
|
fi
|
|
|
|
tooltip=${tooltip%\\n}
|
|
|
|
echo "{\"text\": \"$ICON_BLUETOOTH $ICON_BATTERY\", \"tooltip\": \"$tooltip\"}"
|
|
|