A system tray application for monitoring battery status of Asus ROG Pugio II mouse via HID interface with real-time updates. This application can be adapted for other ROG mice models.
- About
- Features
- Requirements
- Installation
- Usage
- Customization
- Device Detection
- Technical Details
- Troubleshooting
- Translation
- Auto-start Setup
- License
This project is inspired by the work from https://github.com/seerge/g-helper, which implements proper methods for accessing battery information from ASUS devices through the HID protocol.
- Real-time battery status monitoring
- System tray icon with status indication
- Visual battery display popup window
- Charging status detection
- Automatic background execution
- Windows dark and light theme support
- Armoury Crate shortcut
- Single instance enforcement
- Python 3.7+
- Windows (Tested on Windows 10 & 11)
- Asus ROG mouse with HID support (Pugio II and similar models)
- Install required packages:
pip install hidapi pillow pystray- Image assets are already included in the
assets/images/directory. You can replace them with your own images if desired:not_connected.png- icon when mouse is disconnectedcharging.png- icon when mouse is charginggreen.png- icon when battery >= 75%orange.png- icon when battery 25-74%red.png- icon when battery < 25%mouse.png- mouse image for popup window (70x70px)
Run the application by executing:
Asus ROG Pugio II Battery Status.pywOr from command line:
python "Asus ROG Pugio II Battery Status.pyw"The application automatically launches in system tray. Click the tray icon or use the context menu:
- Show Battery Status - Displays popup with visual battery indicator
- Armoury Crate - Opens Armoury Crate application
- Quit - Exits the application
This application is pre-configured for the Asus ROG Pugio II, but can be adapted for other supported ROG mice models. To customize it for your mouse:
- Rename the application - Change the
.pywfilename to match your mouse model - Update window title - Modify the tray icon title and window labels in the code
- Replace images - Update the icons and mouse image in
assets/images/folder - Find your mouse PID - Run
find_device_id.pyto identify your device and update thePRODUCT_IDS_WITH_BATTERYlist accordingly
For a comprehensive list of supported ROG devices and their correct HID communication parameters, refer to the https://github.com/seerge/g-helper project.
To find the correct Product ID and device information for your mouse, run:
python find_device_id.pyThe script will output all connected ASUS devices (Vendor ID 0x0B05) with their details:
- Product string
- Manufacturer
- Product ID (PID) in hexadecimal format
- Device path
- Multiple Interface (MI) identifier
For Pugio II, the Product IDs are 0x1908 (without charging) and 0x1906 (with charging).
The application communicates with the mouse via HID reports:
- Sends request packet:
[0x00, 0x12, 0x07] - Receives response with battery data
- Battery level is read from byte 4 of the response with formula:
battery_percentage = raw_value * 25
Charging status is determined by Product ID:
0x1906= mouse is charging- Other PIDs = mouse is not charging
If the application doesn't work:
- Run
find_device_id.pyand verify your mouse is detected - Check that all images are in the correct location
- Verify Product IDs match your device
- Verify Windows USB HID driver compatibility
- Ensure mouse is connected via USB
- Check that the HID device is not in use by other applications
To run the application automatically on Windows startup:
- Press
Win + Rand typeshell:startup - Create a shortcut to
Asus ROG Pugio II Battery Status.pywin this folder - You can use the included
.icofile for the shortcut icon
This application uses Slovak as the native language of the creator. Currently, only the system tray menu items are in Slovak. If you want to translate the UI to another language:
- Open the main
.pywfile - Replace all Slovak text strings (menu items, window titles, tooltip text) with your target language
- Test the application to ensure all translations display correctly
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- Application uses file lock to prevent multiple instances
- Default update interval is 5 seconds
- Popup window automatically closes after 2.5 seconds
- Application automatically detects Windows light and dark theme
- USB packet size is 65 bytes
- HID read timeout is 1000ms
