A lightweight, modern tray indicator that shows your wireless headset's battery level and charging status, with controls for LEDs, sidetone, ChatMix, and more β powered by HeadsetControl and built with PySide6 (Qt).
Works on KDE Plasma, GNOME, XFCE, Cinnamon, and other Linux desktop environments.
- Dynamic Tray Icon β Live battery percentage and charging state rendered in real time.
- Low-Battery Notifications β Desktop alerts with optional headset sound when battery drops below your threshold.
- Preferences Dialog β Customize icon colors, orientation, scale, text overlay, poll interval, notification threshold, disconnected icon style, and language.
- Device Control β Toggle LEDs, adjust sidetone, set ChatMix level, and configure auto power-off time.
- Persistent Configuration β All preferences are saved between sessions automatically.
- Non-Blocking Polling β Hardware queries run in a background thread; the UI never freezes.
- Internationalization β UI is fully translatable; Spanish included. Language selectable in Preferences.
- Version Menu Item β Current version shown in the tray menu; click to open the GitHub releases page and check for updates.
- Debug Mode β Interactive console with live log output for troubleshooting.
| Dependency | Description |
|---|---|
| HeadsetControl | Hardware communication backend β must be installed separately |
| Python 3.8+ | Runtime environment |
| PySide6 | Qt GUI framework |
β οΈ This app depends entirely on HeadsetControl for hardware communication.
Make sureheadsetcontrolis installed and working before running the indicator.
No need to install Python or PySide6 β just headsetcontrol.
Download the latest AppImage (Linux) or EXE (Windows) from the Releases page.
-
Download the latest AppImage from the Releases page.
-
Make it executable:
chmod +x Headset_Battery_Indicator-*.AppImage -
Run it:
./Headset_Battery_Indicator-*.AppImage
You can move it to ~/.local/bin and add it to your desktop's autostart list.
sudo dnf copr enable ruflas/headset-battery-indicator
sudo dnf install headset-battery-indicatorInstall using your AUR helper of choice:
yay -S headset-battery-indicator-git
# or
paru -S headset-battery-indicator-gitCommunity-maintained AUR package by @segarra99.
-
Install system dependencies:
# Fedora: sudo dnf install headsetcontrol python3-pyside6 # Debian/Ubuntu: sudo apt install headsetcontrol python3-pyside6
-
Clone and install:
git clone https://github.com/ruflas/headset-battery-indicator.git cd headset-battery-indicator pip install .
-
Run:
headset-battery-indicator # or python -m headset_battery_indicator
Once launched, the indicator appears in your system tray.
Right-clicking the tray icon gives you:
- Device name and current status (read-only info)
- Preferences β opens the configuration dialog
- Notify on low battery β toggle low-battery alerts
- LED, Sidetone, ChatMix, Auto-Off β direct device controls
Open via the tray menu β Preferences. From here you can configure:
- Icon fill and border colors (color picker or
#RRGGBBhex input) - Battery icon orientation (horizontal / vertical)
- Icon zoom/scale
- Percentage text overlay
- Notification threshold (5β95%)
- Poll interval (10β300 seconds)
- When disconnected β choose between empty battery (default), error/X icon, or hiding the tray icon
- Language β select UI language; Spanish and English included (restart required)
All settings take effect immediately and are saved automatically.
| Option | Description |
|---|---|
-h, --help |
Show help message and exit |
-debug |
Enable interactive debug mode with live log output |
Example:
./Headset_Battery_Indicator-*.AppImage -debugIn debug mode, available commands include setIcon 75, setIcon 100 charging, notification, update, mockon, mockoff, resume, and exit.
To run the indicator automatically on login:
- Open System Settings.
- Go to Startup and Shutdown β Autostart (KDE) or Startup Applications (GNOME/XFCE).
- Add a new entry:
- AppImage:
/full/path/to/Headset_Battery_Indicator-*.AppImage - Source install:
headset-battery-indicator
- AppImage:
Install headsetcontrol and verify it works before launching the indicator:
headsetcontrol -bInstallation by distro:
- Fedora / RHEL:
sudo dnf install headsetcontrol - Debian / Ubuntu:
sudo apt install headsetcontrol - Manual: see the HeadsetControl releases page
| Desktop Environment | Fix |
|---|---|
| GNOME | Install AppIndicator extension |
| KDE Plasma | Works out of the box |
| XFCE / Cinnamon | Works out of the box |
Also make sure QT_QPA_PLATFORM is not set to offscreen.
headsetcontrol needs USB device access. Install the udev rules:
sudo curl -o /etc/udev/rules.d/70-headsetcontrol.rules \
https://raw.githubusercontent.com/Sapd/HeadsetControl/master/udev/70-headsetcontrol.rules
sudo udevadm control --reload-rules && sudo udevadm triggerThen re-plug the headset.
Launch with -debug for live log output and an interactive console:
# AppImage:
./Headset_Battery_Indicator-*.AppImage -debug
# Source install:
python -m headset_battery_indicator -debugThe rotating log file is always written to:
~/.local/share/HeadsetBatteryIndicator/logs/app.log

