Existing readings, local events.
Cello listens to BlueZ's local cache. It does not scan, pair, connect, read GATT characteristics or write HID commands. The widget has no recurring polling timer.
Cello · GNOME Shell 46 · Public preview
Bluetooth keyboards, mice, headphones and controllers, together on your desktop. Charge rings and clear percentages in a small card that picks up the colors of your wallpaper.

A small desktop companion
Up to six connected devices, automatic wrapping and four corner positions. Unknown levels stay unknown; an optional Keychron bridge keeps its estimate visibly marked with ~.
Cello listens to BlueZ's local cache. It does not scan, pair, connect, read GATT characteristics or write HID commands. The widget has no recurring polling timer.
Choose the appearance yourself or let it follow the wallpaper beneath the card. The image is decoded asynchronously into a cached thumbnail; unchanged readings keep the same actors.
Right-click the card or use ⋮ to choose a corner, change appearance or refresh the local cache. The card sits above the desktop icon surface and below ordinary application windows.


Install the preview
The ZIP and checksums are available on GitHub. GNOME Extensions submission #11286 is awaiting review. Store installation is not yet available.
.shell-extension.zip and SHA256SUMS from the release and verify the checksum.gnome-extensions install --force keychron-batteries-widget@fglabs.local.shell-extension.zipWhat was checked
CI and an isolated GNOME 46 session cover menu pointer events, placement, optional bridge lifecycle, stale readings, automatic contrast and cleanup. A local 22-second idle observation counted zero additional BlueZ snapshots and zero widget rebuilds. It is not a measurement of watts, CPU/RAM overhead or device autonomy.
Installed-session Wayland, real multi-monitor and HiDPI qualification remain open. BlueZ and an optional external Keychron bridge have independent behavior. The bridge is not bundled or required for ordinary Bluetooth devices.
Read the release devlog →