๐ŸŽง Headset Battery Indicator

June 15, 2026 ยท View on GitHub

License Release Python Downloads

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.

Screenshot of the tray icon


๐Ÿ“˜ 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

DependencyDescription
HeadsetControlHardware communication backend โ€” must be installed separately
Python 3.8+Runtime environment
PySide6Qt GUI framework

โš ๏ธ This app depends entirely on HeadsetControl for hardware communication.
Make sure headsetcontrol is installed and working before running the indicator.


๐Ÿš€ Installation

No need to install Python or PySide6 โ€” just headsetcontrol.

Download the latest AppImage (Linux) or EXE (Windows) from the Releases page.

  1. Download the latest AppImage from the Releases page.

  2. Make it executable:

    chmod +x Headset_Battery_Indicator-*.AppImage
    
  3. 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

  1. Install system dependencies:

    # Fedora:
    sudo dnf install headsetcontrol python3-pyside6
    
    # Debian/Ubuntu:
    sudo apt install headsetcontrol python3-pyside6
    
  2. Clone and install:

    git clone https://github.com/ruflas/headset-battery-indicator.git
    cd headset-battery-indicator
    pip install .
    
  3. 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

Screenshot of the context menu

Preferences Dialog

Open via the tray menu โ†’ Preferences. From here you can configure:

  • Icon fill and border colors (color picker or #RRGGBB hex 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

OptionDescription
-h, --helpShow help message and exit
-debugEnable 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:

  1. Open System Settings.
  2. Go to Startup and Shutdown โ†’ Autostart (KDE) or Startup Applications (GNOME/XFCE).
  3. Add a new entry:
    • AppImage: /full/path/to/Headset_Battery_Indicator-*.AppImage
    • Source install: headset-battery-indicator

๐Ÿ”ง 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 EnvironmentFix
GNOMEInstall AppIndicator extension
KDE PlasmaWorks out of the box
XFCE / CinnamonWorks 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