Battery drained by silence
Connected headphones use power even when nothing is playing. By evening they need charging again.
BT Audio Idle lives in your macOS menu bar and listens for silence. When nothing has played for 10 minutes, it disconnects your Bluetooth headphones and speakers, so they stop draining battery on your desk and are free for your phone.
Problem
The music stopped, the headphones are on your desk and you are in the kitchen. macOS won’t let go of them on its own: you have to turn Bluetooth off or disconnect them by hand.
Connected headphones use power even when nothing is playing. By evening they need charging again.
While the Mac holds the connection, headphones often won’t pair up with your phone or tablet unless you switch them over manually.
A forgotten speaker in another room is still the default output, so the next sound plays there.
Features
Everything is set up in one window with four tabs: General, Devices, Apps and About.
The app asks CoreAudio whether the default output device is actually playing anything. Once it goes quiet, a countdown starts, and right before disconnecting you get a notification with a Cancel button.
The list shows every paired Bluetooth audio device and whether it is connected right now. You can exclude any of them from monitoring or give it its own idle timeout instead of the global one.
Zoom or Teams calls have long quiet stretches, and your headphones should stay put. Add those apps to the whitelist: while any of them is running, the countdown doesn’t start.
The app reacts when your Mac sleeps and can start at login. Everything it does goes into a log file.
SMAppService.~/Library/Logs/BTAudioIdleDisconnect.log, rotated at 1 MB.How it works
Download the DMG and drag the app into Applications. On first launch, right-click it and choose Open.
Without them the app still disconnects, but you won’t get the warning with its Cancel button.
Open Preferences… from the menu bar icon and choose the idle timeout, devices and whitelisted apps.
While music plays, nothing happens. When it stops, a countdown appears next to the icon, followed by the warning and the disconnect.
| Something is playing | No countdown. |
|---|---|
| It goes quiet | The countdown starts and the menu bar shows the time left, e.g. 9:42. |
| Time is up | A notification appears and the icon counts down in seconds. |
| You click Cancel | The disconnect is pushed back by the Snooze on cancel time. |
| The warning runs out | Monitored devices are disconnected. |
| Mac sleeps / wakes | The countdown stops (or devices are disconnected, if you chose that) and starts over on wake. |
Gallery
Click a screenshot to enlarge it. They come from the running app; device names and addresses are made up. Light or dark versions follow your system theme.
Install
Requirements: macOS 13 or later and a paired Bluetooth audio device.
You need Xcode 15+ or Swift 5.9+. The script builds a release binary, assembles the .app bundle and ad-hoc signs it.
git clone https://github.com/jash90/bt-audio-idle-disconnect.git
cd bt-audio-idle-disconnect
./scripts/build-app.sh
mv "build/BT Audio Idle.app" /Applications/
open "/Applications/BT Audio Idle.app"
Settings: ~/Library/Application Support/BTAudioIdleDisconnect/settings.json. Log: ~/Library/Logs/BTAudioIdleDisconnect.log. ./scripts/build-dmg.sh builds the DMG.
IOBluetooth API, which the App Store sandbox doesn’t allow, so the app is distributed directly.