๐ง Headset Battery Indicator
June 15, 2026 ยท View on GitHub
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.

๐ Table of Contents
โจ Features
- 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.
๐งฉ Requirements
| 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.
๐ Installation
Option 1: AppImage / Windows EXE (Recommended)
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.
Option 2: Fedora COPR
sudo dnf copr enable ruflas/headset-battery-indicator
sudo dnf install headset-battery-indicator
Option 3: Arch Linux (AUR)
Install using your AUR helper of choice:
yay -S headset-battery-indicator-git
# or
paru -S headset-battery-indicator-git
Community-maintained AUR package by @segarra99.
Option 4: From Source
-
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
โ๏ธ Usage
Once launched, the indicator appears in your system tray.
Right-Click Menu
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

Preferences Dialog
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.
๐ง Command-Line Options
| Option | Description |
|---|---|
-h, --help | Show help message and exit |
-debug | Enable interactive debug mode with live log output |
Example:
./Headset_Battery_Indicator-*.AppImage -debug
In debug mode, available commands include setIcon 75, setIcon 100 charging, notification, update, mockon, mockoff, resume, and exit.
๐ Autostart
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:
๐ง Troubleshooting
"HeadsetControl binary not found"
Install headsetcontrol and verify it works before launching the indicator:
headsetcontrol -b
Installation by distro:
- Fedora / RHEL:
sudo dnf install headsetcontrol - Debian / Ubuntu:
sudo apt install headsetcontrol - Manual: see the HeadsetControl releases page
Tray icon does not appear
| 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.
USB permission denied / headset not detected
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 trigger
Then re-plug the headset.
Debugging
Launch with -debug for live log output and an interactive console:
# AppImage:
./Headset_Battery_Indicator-*.AppImage -debug
# Source install:
python -m headset_battery_indicator -debug
Windows standalone .exe: the app runs in portable mode โ settings
(settings.ini) and the rotating log file are stored in a logs/ folder
next to the executable, so it leaves no trace on the host system and can
run from a USB drive:
<app folder>/settings.ini
<app folder>/logs/app.log
Linux, macOS, and source/package installs (incl. Fedora/AUR): settings
use the platform's native location (e.g. ~/.config on Linux), and the
log file is written to:
~/.local/share/HeadsetBatteryIndicator/logs/app.log