Skip to content
All projects

Linux desktop

PeriGauge

Your mouse, keyboard and headphone battery, right in your panel.

Battery monitor for mice, keyboards and Bluetooth headphones on the Linux desktop: one Rust binary, fully local, with no network and no telemetry, a KDE Plasma 6 widget and low-battery notifications.

Status
Alpha
Year
2026
Category
Linux desktop
License
MIT
PERIGAUGEKeychron M6ultra-link 8k72Galaxy Buds3 Probluetooth · sppLRcaseMX Master 3Shid++ · bolt9%12:48Alpha

About the project

PeriGauge shows the battery of wireless peripherals in the Linux panel and on the desktop, with one meter per device — including left earbud, right earbud and case — as circular gauges or bars. A user service reads the devices every 30 seconds and notifies at 20%, 10% and 5%, and when charging completes. Each threshold fires once per discharge, and stale, absent or voltage-estimated readings never notify.

The core is a single Rust binary with backends for Logitech HID++ 2.0 (Bolt, Unifying and Bluetooth), the Keychron Ultra-Link 8K receiver, Galaxy Buds SPP status and anything UPower already knows — with no Solaar dependency. The widgets read a versioned JSON contract. The installer writes only to the user's directories and never uses sudo; root-free HID access is a separate, explicit udev rule. PeriGauge replaced the old perif-battery helper, written in Python.

Highlights

  • Verified on hardware with the Keychron M6 (Ultra-Link 8K receiver) and Galaxy Buds3 Pro on KDE Plasma 6.6; Logitech HID++ is implemented and fixture-tested, with hardware validation pending.
  • QML widget for KDE Plasma 6 with circular gauges or bars and separate meters for left earbud, right earbud and case.
  • Notifications at 20%, 10%, 5% and 100%, with hysteresis: each threshold fires once per discharge and re-arms as the charge recovers.
  • Local by default: it only talks to your devices and the desktop, with no network and no telemetry.
  • A versioned JSON contract (perigauge status --json) shared by the widgets, plus a doctor command for diagnostics.
  • Releases with SHA-256 checksums, an installer with --dry-run and no sudo, and an optional udev rule documented in SECURITY.md.

Projects

More projects

Contact

Let's talk?

Got a platform, cloud or observability challenge — or want to chat about one of the projects? Reach me on WhatsApp or by email.