HaloBattery README

The project's README from github.com/HeyOkay/HaloBattery. As one markdown file: README.md.

Halo Battery

Battery levels for wireless mice, keyboards, headsets and controllers in the Windows system tray - one icon per device, no vendor software.

All icon states

While charging, the arc slowly "breathes":

Charging animation

Each device gets its own tray icon: a battery ring with the device's pictogram in the middle. The arc fills clockwise from the top, turns amber as the level approaches your alert threshold and red at or below it, and breathes green while the device charges. Hover over an icon for the exact percentage; right-click it to rename, hide, change the preferences or take a diagnostics report.

Levels are read over USB/HID (a dongle, a receiver or a cable), from Xbox-style controller reports, and from Windows itself for Bluetooth devices.

Supported devices

yes means the level has actually been seen on the device - here, from a report, or from a user who tried it. no means the support was written from another tool's code and nobody has tried it on real hardware yet. likely means other models of the same family share the code, so they should work too - they just haven't been tried one at a time. Each device links to notes on how its level is read.

Device Connection Verified on hardware
8BitDo Pro 2, Pro 3, SN30 Pro, SF30 Pro in D-input mode Bluetooth or USB no
AM Infinity 8K (Angry Miao) 2.4 GHz receiver no
Astro A50 Gen 5 (Logitech 046D:0B1C) Base station no
ASUS ROG Gladius III Aimpoint and other ROG / TUF wireless mice (list in providers/asus.py) 2.4 GHz receiver or USB cable no
Audeze Maxwell 2.4 GHz dongle or USB-C cable yes
Bluetooth devices, tested on the 1MORE SonoFlow headset (users also report Audio-Technica and JBL Tune 760NC headphones working) Bluetooth (on by default, can be turned off in the menu) yes
Corsair Dark Core RGB Pro SE 2.4 GHz dongle no
Corsair Void v2 Wireless, Virtuoso Max Wireless, HS80 Max Wireless Wireless receiver no
GameSir G7 Pro; FlyDigi Vader Pro (tested by users) 2.4 GHz receiver (shows up as an Xbox controller) yes
G-Wolves WARG, HTS Plus (Pro), HTXU, Lycan, Fenrir Pro / Asym, HTX Mini 8K receiver or USB cable no
Hitscan Hyperlight 2.4 GHz receiver or USB cable no
HyperX Cloud Alpha 2 2.4 GHz station yes
HyperX Cloud II Wireless 2.4 GHz dongle no
HyperX Cloud III Wireless 2.4 GHz dongle no
JBL Quantum 910 Wireless 2.4 GHz dongle yes
Keychron Ultra-Link 8K, Keychron M5 2.4 GHz receiver and USB cable no
LAMZU Maya X 8K dongle or USB cable yes
Lofree Hyzen 2.4 GHz dongle no
Logitech G502 LIGHTSPEED, G502 X PLUS Lightspeed receiver yes
Logitech (more HID++ 2.0 devices and G-series headsets) Lightspeed, Unifying or Bolt receiver likely
MCHOSE A7 V2 Ultra 2.4 GHz receiver no
MCHOSE G7 USB (chip 'YJX-CHIP') yes
MCHOSE M7 Ultra 2.4 GHz receiver yes
Nintendo Switch Pro Controller, Joy-Con (L) / (R) Bluetooth no
Pulsar X2 V2 Mini, ATK VXE R1 SE+, VXE R1 Pro Max 2.4 GHz dongle and USB cable yes
Razer Barracuda Pro (2.4 GHz) 2.4 GHz dongle yes
Razer Basilisk V3 Pro, Razer Basilisk Ultimate (tested by users) 2.4 GHz receiver yes
Razer BlackShark V2 Pro (2023) 2.4 GHz receiver yes
Razer BlackWidow V3 Pro 2.4 GHz receiver or USB cable no
Razer DeathAdder V4 Pro 2.4 GHz receiver yes
Razer wireless mice (other OpenRazer models) 2.4 GHz receiver or USB cable likely
Sony DualSense (PS5) USB or Bluetooth yes
Sony DualShock 4 (PS4) USB cable and Bluetooth yes
SteelSeries Aerox 3 Wireless 2.4 GHz dongle no
SteelSeries Arctis and GameBuds (other models) wireless base station or dongle likely
SteelSeries Arctis Nova 7 2.4 GHz dongle yes
SteelSeries Arctis Nova Pro Wireless (1038:12E0, 1038:12E5 X) Wireless base station, interface 3 or 4 no
SteelSeries Rival 3 Wireless 2.4 GHz dongle no
WLmouse Beast X and Beast X Mini Pro 8K or 1K receiver, or USB cable likely
WLmouse Beast X Max 8K receiver and USB cable yes
Xbox-compatible controllers (other models) USB or the Xbox wireless adapter likely

PlayStation controllers over Bluetooth: a DualShock 4 or DualSense sends its battery level over Bluetooth only in its "full report" mode. Switching a controller into that mode makes it invisible to games that use DirectInput until it is turned off and on again (#96), so the app does not switch it: the level shows while Steam or a game has already put the controller in that mode, and otherwise the icon shows the controller without a level. If you do not play such games, turn on Preferences > PlayStation full mode (Bluetooth) to always see the level. Over USB the level is always shown.

8BitDo controllers in D-input mode: the battery level is only in the controller's enhanced report. Switching the controller into that mode makes it invisible to DirectInput games until it is turned off and on (tested by the reporter of #101), so the app never switches it: the level shows while Steam or a game has already put the controller in that mode, and otherwise the icon shows the controller without a level. In XInput mode the level is always shown.

The devices marked likely are the same code paths with other models: the rest of the Razer list OpenRazer reads, the other WLmouse models, more Logitech HID++ 2.0 devices and G-series headsets, the other Arctis Nova and older Arctis models, and other Xbox-compatible controllers.

Support for other devices is not guaranteed. New devices are added based on feedback and diagnostics logs: if yours is not detected or shows a wrong level, open an issue and attach the diagnostics report - see Troubleshooting below.

Installation

  1. Download HaloBattery-<version>.zip from the Releases page.
  2. Extract it somewhere permanent, e.g. C:\Tools, so you get C:\Tools\HaloBattery\HaloBattery.exe, and run HaloBattery.exe. Keep the HaloBattery folder together: the .exe needs the _internal folder next to it.
  3. Right-click the tray icon → Start with Windows.

The app checks for a new release once a day and adds Download vX.Y.Z… to the menu when there is one. To update: tray menu → Exit, then replace the folder; Start with Windows follows the new copy. If you used the old single-file HaloBattery.exe, delete it.

Windows SmartScreen may warn about an unrecognized app on first launch, because the file is not code-signed: More info → Run anyway. Some antivirus tools flag unsigned Python apps by mistake (usually a generic !ml detection). The release is built by GitHub Actions straight from this repository, with public build logs; if you would rather not trust it, use Option 2.

Option 2: from source

  1. Install Python 3.10+ with Add python.exe to PATH checked.
  2. Download or clone this repository somewhere permanent, e.g. C:\Tools\HaloBattery.
  3. Run install_and_run.bat, then right-click the tray icon → Start with Windows.

build_exe.bat builds it yourself into dist\HaloBattery. Releases are built automatically: pushing a tag like v1.8.0 makes GitHub Actions build the app and attach the zip (.github/workflows/release.yml).

The icon

The low battery notification fires once, and again only after the device has been charged.

Tray menu

Right-click a device icon to open its menu. It looks like a Windows 11 menu (acrylic background, rounded corners, the light or dark app theme) and is sharp at any display scale. If it does not work on your PC, set "fluent_menu": false in %APPDATA%\HaloBattery\config.json to get the classic Windows menu back.

Troubleshooting

  1. Close Synapse, the WLmouse web driver and other battery tools - they may hold the receiver.
  2. Wake the mouse up by moving it.
  3. Run probe.bat or choose Diagnostics… from the tray menu. The report lists every HID device and the raw protocol replies. Attach it to an issue in this repository to get a new device supported. The report contains Bluetooth MAC addresses and device serial numbers; you may want to redact them before posting. CONTRIBUTING.md tells you what to attach, how to record a USB capture for a device that is not supported yet, and how to open a pull request.
  4. "python312.dll was not found", or Start with Windows says the app runs from a temporary folder: the app was started straight from the ZIP, or only HaloBattery.exe was copied out of it. Extract the whole ZIP to a folder of its own (the _internal folder must stay next to the .exe) and run HaloBattery.exe from there.

Settings, the log and the diagnostics report live in %APPDATA%\HaloBattery.

Credits

License

MIT, see LICENSE.

HaloBattery (HeyOkay/HaloBattery)

Searching Database…

Что это?HaloBattery — приложение для трея Windows, показывающее уровень заряда беспроводных мышей, клавиатур, гарнитур и геймпадов и дающее каждому устройству свою иконку, вместо того чтобы заставлять вас устанавливать фирменный софт каждого производителя.
Нужно ли устанавливать Python, чтобы им пользоваться?Нет — рекомендуемый .exe работает автономно, фирменный софт не нужен; Python 3.10+ требуется только если решите запускать проект из исходников.
Работает ли оно с любой беспроводной мышью, гарнитурой или геймпадом?Поддержка различается по устройствам: в README модели помечены yes (уровень реально виден на настоящем железе), likely (тот же код, что у проверенной родственной модели) или no (перенесено из кода другого инструмента и ни разу не тестировалось); некоторые геймпады PS4/PS5 и 8BitDo также сообщают уровень только после того, как игра уже перевела их в их специальный режим Bluetooth-отчётов.
Это только для Windows?Да, оно создано специально для системного трея Windows и даже подстраивает цвет иконки под тему панели задач (светлую или тёмную).
Как иконка в трее показывает зарядку и низкий заряд?Каждая иконка — кольцо батареи, которое заполняется по часовой стрелке, желтеет возле вашего порога оповещения и краснеет при достижении или ниже него, а во время зарядки устройства зелёно «дышит» (дыхательную анимацию можно отключить).
Могут ли другие приложения читать данные о батарее, которые собирает HaloBattery?Да, включение «Status file for other apps» пишет status.json в %APPDATA%\HaloBattery с именем, уровнем, состоянием зарядки и другими данными каждого устройства — полезно для Rainmeter, плагина Stream Deck или собственного скрипта.
Что делать, если моё устройство определяется неправильно?Запустите probe.bat или выберите Diagnostics в меню трея, чтобы создать отчёт со списком всех HID-устройств и их сырых ответов протокола, затем приложите его к GitHub issue, чтобы поддержку добавили.
Оценивает ли оно оставшееся время работы от батареи?Да, когда устройство использовалось минимум 30 минут и разрядилось на 3%, всплывающая подсказка показывает оценку вроде «осталось около 5 ч работы», рассчитанную по скорости разряда с последней зарядки.
Creator
HeyOkay
Size
2.1 MB
Stars
665
Age
23d
Commits · 90 Days