Bluetooth Speaker Battery Monitor for Windows System Tray
- Real-time battery monitoring for Bluetooth speakers/headphones
- Dynamic system tray icon with dragon design
- Multi-device display with user selection
- Battery notifications at configurable thresholds
- Auto-refresh every 60 seconds
- Lightweight - no heavy GUI, just system tray icon
- Bluetooth Speaker
- Bluetooth Headphone / Headset
- Bluetooth Earbuds / Buds
- Any device with A2DP / AVRCP / Handsfree profile
- Windows 10/11
- Python 3.8+ (for running from source)
- Bluetooth adapter
- Paired Bluetooth speaker/headphone
- Download from Releases
- Double-click XBubamon.exe
- XBubamon will shown in system tray bottom right of desktop. (sometimes in hiddens icons, drag-n-drop to show it)
# Install dependencies
pip install pystray pillow
# Run
python bluetooth_battery_monitor.py# Install PyInstaller
pip install pyinstaller
# Build
pyinstaller --onefile --windowed --icon=icon.ico --name "XBubamon" bluetooth_battery_monitor.py
# EXE is in dist/ folder
dist/XBubamon.exe# Double-click build.bat
# EXE will be created in dist/ folderUses Windows property {83DA6326-97A6-4088-9453-A1923F573B29} 15 to check if device is actually connected. Returns True when connected, False when disconnected.
Uses Windows property {104EA319-6EE2-4701-BD47-8DDBF425BBE5} 2 to read battery level (0-100%).
1. Scan all Bluetooth devices with audio profile
2. Check connection status via property {83DA6326...}
3. If connected β read battery level
4. Display in system tray
| Icon | Description |
|---|---|
| Green battery (>60%) | Battery full |
| Yellow battery (30-60%) | Battery medium |
| Red battery (<30%) | Battery low |
| Icon | Description |
|---|---|
| Gray with red X | Device disconnected |
- Refresh - Rescan devices
- Show Info - Display device details and battery
- Settings - Select which devices to display
- About - Application info
- Quit - Exit application
Open Settings to see all connected Bluetooth devices. Check/uncheck devices to show in tray.
Battery notifications appear when level reaches:
- 50% (default)
- 40%
- 30%
- 20%
- 10%
Notifications only appear once per threshold until battery drops further.
Settings are saved in settings.json:
{
"visible_devices": ["Play 2 Avrcp Transport"],
"notifications_enabled": true,
"notification_thresholds": [50, 40, 30, 20, 10]
}- Make sure speaker/headphone is paired and connected
- Check Settings > Bluetooth & devices - device must be active
- Run as Administrator if needed
- Device may not support battery reporting
- Try disconnecting & reconnecting device
- Restart Bluetooth service:
Restart-Service bthserv
- Normal to take ~5-7 seconds for initial scan
- This is due to PowerShell querying Windows API
- Subsequent refreshes are faster
- Check Windows notification settings
- Make sure notifications are enabled in app settings
- Restart app after changing settings
- Python 3.10+
- pystray - System tray icon
- Pillow (PIL) - Icon image generation
- PowerShell - Windows API queries
- WMI/PnP - Device detection
bluetooth_battery_monitor/
βββ bluetooth_battery_monitor.py # Main script
βββ icon.png # App icon (PNG)
βββ icon.ico # App icon (ICO)
βββ logo.png # Logo
βββ settings.json # User settings
βββ README.md # This file
βββ build.bat # Build script
βββ .gitignore # Git ignore rules
- Initial release
- Real-time battery monitoring
- Smart connection detection
- System tray integration
- Multi-device support
- Battery notifications
- Custom dragon icon
JARxAI
- Copyright (C) 2026
MIT License
Made with Python and Bluetooth magic.
- Build to EXE first
- Copy EXE to startup folder:
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
- Right-click EXE β Create shortcut
- Copy shortcut to Desktop or Start Menu
# Add to registry (run as admin)
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "XBubamon" /d "C:\Path\To\XBubamon.exe" /f