Panel controls, battery status, lighting profiles and wired VIA RGB controls for the Keychron K5 Pro.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
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.
controller.js:141
this._statusItem = new PopupMenu.PopupMenuItem('Keyboard', {reactive: false})
EGO-L-005 warning
owned object references should be released in disable()
Owned references that are cleaned up in `disable()` should also be released with `null` or `undefined`.
controller.js:141
this._statusItem = new PopupMenu.PopupMenuItem('Keyboard', {reactive: false})
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.
controller.js:126
this.menu.connect('open-state-changed', (_menu, open) => {
if (open)
this._extension.refreshState();
else
this._extension.flushPendingLightingSave();
})
| Version | Status |
|---|---|
| 5 | Unreviewed |
| 4 | Rejected |
| 3 | Rejected |
| 2 | Active |
| 1 | Rejected |
Is this code generated by AI? If so, we have a rule for that: - [EGO Review Guidelines: AI](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#extensions-must-not-be-ai-generated) - [Extensions Best Practices Guidelines](https://gjs.guide/extensions/review-guidelines/best-practices.html#submissions-require-maintainership)
I used AI through Cursor/Codex during development and refactoring of the extension, mainly to help capture and convert existing information, work around the official Keychron launcher not working in all browsers, and debug it for the hardware I actually use. The extension has been tested locally on my own K5 Pro. I understand that the requirement is that I need to be able to maintain and debug the submitted code myself, and I’ll continue maintaining it on GitHub regardless of the outcome here. If the amount of AI assistance used means the current submission isn’t eligible, I'll withdraw the extension and keep it for personal use. Let me know if that’s your decision, or if there’s anything else you need from me.
1. Timeout should be removed on destroy and before creating a new one (line 402 `hid.js`): [EGO Review Guidelines: Timeout](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#remove-main-loop-sources) 2. `this._enabled` is a bad practice. Please remove that: [Extension Best Practices Guidelines](https://gjs.guide/extensions/review-guidelines/best-practices.html) If you need any help with your extension you can ask us on: - [GNOME Extensions Matrix Channel](https://matrix.to/#/#extensions:gnome.org) - IRC Bridge: irc://irc.gimpnet.org/shell-extensions