I automate part of my macOS builds for new OS releases. I use a simple script (_version_check.sh) that I update with the latest release, ie … 12.2.1. Then I commit it to my repo and fire a webhook to Jenkins. Jenkins takes the version number and checks to see if it’s available via the "softwareupdate" command.
If it is, it downloads the full installer app, “Install macOS Monterey.app“, to the Applications folder. When that is successful, I have a second Jenkins job that converts the “.app" to a “.dmg" . I archive the “.dmg" and use it in automated workflows with tools like MDS
I use a tool called GeekTool (a fun tool that can be used in a lot of ways) 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.
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.
#!/bin/zsh
# 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