#!/bin/bash SCRIPTS_DIR=~/.config/waybar/scripts get_battery_status() { device_uuid=$1 device_uuid_slug=$(echo "$device_uuid" | sed 's/:/_/g') device_upower_path=$(upower -e | grep "$device_uuid_slug") if [[ "$?" != 0 ]]; then return 1 fi upower_out=$(upower -i "$device_upower_path") percentage=$(echo "$upower_out" | grep 'percentage:' | grep -oe '[0-9]*%') if [[ "$?" != 0 ]]; then return 1 fi echo $percentage } # prepare devices to process connected_devices=$1 if [[ "$connected_devices" == "" ]]; then connected_devices=$($SCRIPTS_DIR/bt-connected.sh) fi if [[ "$connected_devices" == "" ]]; then echo "no bluetooth devices connected" >&2 exit 1 fi n=0 declare -A device_batteries for device in ${connected_devices//\\n/ }; do device_battery_percentage=$(get_battery_status "$device") if [[ $? != 0 ]]; then continue fi n=$((n+1)) device_batteries[$device]=$device_battery_percentage # echo "$device: $device_battery_percentage" done if [[ $n -eq 0 ]]; then echo "cannot get battery status for any specified bluetooth device" >&2 exit 1 fi # TODO: do something else? for device in ${!device_batteries[*]}; do echo "$device ${device_batteries[$device]}" done