See Bluetooth device batteries at a glance, right on your desktop. Adaptive charge rings, light and dark appearance, and four corner positions. Cello uses battery information already available in BlueZ, without scanning or connecting to devices. Battery availability depends on what each device and BlueZ report. Optional integration with an existing Keychron battery bridge. GNOME Shell 46. English and Italian included. Screenshots show the actual interface with simulated device readings.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-X-004 warning
extensions should avoid synchronous file IO in shell code
Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.
extension.js:22
GLib.file_get_contents(path)
EGO-P-003 error
GSettings schema XML must be present in package
Extension appears to use GSettings but no `.gschema.xml` file is included in the package.
EGO-L-002 warning
objects created by extension should be destroyed in disable()
Objects assigned in `enable()` are missing matching `.destroy()` calls in `disable()` or its helper methods.
extension.js:453
this._menuManager = new PopupMenu.PopupMenuManager(this._card)
EGO-L-003 warning
signals connected by extension should be disconnected in disable()
Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.
extension.js:215
this._card.connect('button-press-event', (_actor, event) => {
if (event.get_button() !== 3)
return Clutter.EVENT_PROPAGATE;
this._menu.toggle();
return Clutter.EVENT_STOP;
})
extension.js:221
this._card.connect('key-press-event', (_actor, event) => {
if (event.get_key_symbol() === Clutter.KEY_Menu ||
(event.get_key_symbol() === Clutter.KEY_F10 &&
event.get_state() & Clutter.ModifierType.SHIFT_MASK)) {
this._menu.toggle(
extension.js:477
this._menu.connect('open-state-changed', (_menu, open) => {
if (open) {
for (const {item, key, value} of this._options)
item.setOrnament(this._config[key] === value
? PopupMenu.Ornament.CHECK : PopupMenu.Ornament.NONE);
EGO-L-004 warning
main loop sources should be removed in disable()
Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.
extension.js:327
this._renderSource = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 120, () => {
this._renderSource = 0;
this._render();
return GLib.SOURCE_REMOVE;
})
extension.js:424
this._staleSource = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, Math.ceil(remaining), () => {
this._staleSource = 0;
this._queueRender();
return GLib.SOURCE_REMOVE;
})
extension.js:387
this._stateReadSource = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 150, () => {
this._stateReadSource = 0;
this._readState();
return GLib.SOURCE_REMOVE;
})
| Version | Status |
|---|---|
| 1 | Unreviewed |