Showing Bluetooth Battery Percentage On Your Desktop

_nic
3 min readFeb 17, 2022

I use a tool called GeekTool to show the battery percentage of my bluetooth connected devices on my desktop. It makes it easier to keep an eye on them and know when they need charged.

Since switching to an Apple M1 laptop my old script broke, so I took a little time to update it. I used to pull the information from system_profiler but it seems it's been removed. the ioreg command, now list the current battery percentage of any bluetooth connected devices

ioreg -r -l -k "BatteryPercent"

This might look like it gives you a lot of output, but we really just need to parse it, to get what we want. The below command will give you current battery percentage for an Apple Magic Keyboard and Magic Mouse. Other products can be listed, but you’d have to run the above ioreg command and get the Product name to switch out in the command.

KeyboardPercent=$(ioreg -r -l -k "BatteryPercent" \
| grep -A 9 "Magic Keyboard with Touch ID" \
| grep "BatteryPercent" \
| awk '{print $3}')

MousePercent=$(ioreg -r -l -k "BatteryPercent" \
| grep -A 9 "Magic Mouse" \
| grep "BatteryPercent" \
| awk '{print $3}')

echo "Keyboard Battery Level: $KeyboardPercent"
echo "Mouse Battery Level: $MousePercent"

Once I have the command working, I update my GeekTool script. There’s a little more formatting here then just show me the percentage and GeekTool is more sensitive to whitespace. The below command is what I use to paste into the script editor to give me the output in the screenshot.

# Bluetooth Keyboard ------------------------------------------------------------------
KeyboardPercent=$(ioreg -r -l -k "BatteryPercent" | grep -A 9 "Magic Keyboard with Touch ID" | grep "BatteryPercent" | awk '{print $3}')

typeset -i b=5
echo "Keyboard:\t\t\c"

if [ ${KeyboardPercent} = 0 ]
then
echo "Disconnected\c"
else
if [ $KeyboardPercent -lt 11 ]
then
echo "\033[1;31m\c"
else
echo "\033[0m\c"
fi
while [ $b -le $KeyboardPercent ]
do
echo "|\c"
b=`expr $b + 5`
done
while [ $b -le 100 ]
do
echo "\033[1;37m|\033[0m\c"
b=`expr $b + 5`
done
echo "\033[0m $KeyboardPercent%\c"
unset KeyboardPercent
unset b
fi

echo "\033[0m\nMouse:\t\t\t\c"

# Bluetooth Mouse ----------------------------------------------------------------------
MousePercent=$(ioreg -r -l -k "BatteryPercent" | grep -A 9 "Magic Mouse" | grep "BatteryPercent" | awk '{print $3}')

if [ ${MousePercent} = 0 ]
then
echo "Disconnected\c"
else
if [ $MousePercent -lt 11 ]
then
echo "\033[1;31m\c"
else
echo "\033[0m\c"
fi
typeset -i b=5
while [ $b -le $MousePercent ]
do
echo "|\c"
b=`expr $b + 5`
done
while [ $b -le 100 ]
do
echo "\033[1;37m|\033[0m\c"
b=`expr $b + 5`
done
echo "\033[0m $MousePercent%\c"
unset MousePercent
unset b
fi

Scripts can be found here.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

_nic
_nic

Written by _nic

Occasionally I Do Useful Things

No responses yet

Write a response