Control your system using a gamepad - navigate desktop, launch apps, control volume, and more
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-C49-003 error
extensions targeting GNOME 49 must not call maximize or unmaximize with Meta.MaximizeFlags
This extension explicitly targets GNOME Shell 49 but still passes `Meta.MaximizeFlags` to `maximize()` or `unmaximize()`.
actions.js:253
win.maximize(Meta.MaximizeFlags.BOTH)
actions.js:250
win.unmaximize(Meta.MaximizeFlags.BOTH)
EGO-C49-004 error
extensions targeting GNOME 49 must not call Meta.Window.get_maximized
This extension explicitly targets GNOME Shell 49 but still calls removed `Meta.Window.get_maximized()`.
actions.js:249
win.get_maximized()
EGO-A-001 manual_review
extension code must not be minified or obfuscated
File appears obfuscated: 75% of identifiers are 1–2 characters (avg length 4.8).
actionsCatalog.js
short identifier ratio: 75%, identifiers scored: 59
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()`.
gamecontrollerdb.js:32
DB_FILE.load_contents(null)
mappings.js:101
GLib.file_get_contents('/proc/bus/input/devices')
EGO-A-004 warning
extension files should not contain excessive ungated console logging
File contains 6 ungated console.log/warn/error calls (threshold: 5).
logger.js:42
console.log(this._formatMessage(LogLevel.DEBUG, message, context))
logger.js:48
console.log(this._formatMessage(LogLevel.INFO, message, context))
logger.js:64
console.error(`${formattedMessage}\n Error: ${error.message}\n Stack: ${error.stack}`)
logger.js:66
console.error(`${formattedMessage}\n Details: ${JSON.stringify(error)}`)
logger.js:68
console.error(formattedMessage)
logger.js:54
console.warn(this._formatMessage(LogLevel.WARN, message, context))
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:200
this._devicesSection = new PopupMenu.PopupMenuSection()
extension.js:203
this._noDevicesMenuItem = new PopupMenu.PopupMenuItem(_('No gamepads connected'), {
reactive: false,
can_focus: false,
})
extension.js:187
this._panelIcon = new St.Icon({
gicon: this._icons.getCustomIcon('icon', true),
style_class: 'system-status-icon gamepad-panel-icon',
})
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`.
extension.js:200
this._devicesSection = new PopupMenu.PopupMenuSection()
extension.js:203
this._noDevicesMenuItem = new PopupMenu.PopupMenuItem(_('No gamepads connected'), {
reactive: false,
can_focus: false,
})
EGO-L-006 warning
preferences classes should not retain window-scoped objects on instance fields without close-request cleanup
Preferences code stores window-scoped objects on the exported prefs class without `close-request` cleanup.
prefs.js:35
this._settings = this.getSettings()
prefs.js:37
this._applicationChooser = new ApplicationChooser(Array.from(this._appCache.values()))
prefs.js:38
this._available_actions = translatedActions()
prefs.js:39
this._button_display_names = configurableButtonNames()
| Version | Status |
|---|---|
| 1.2.0 (3) | Unreviewed |
| 1.1.0 (2) | Rejected |
| 1.0 (1) | Rejected |
404 URL. Where is the git URL? 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)
Sorry, the actual URL is https://codeberg.org/inbalboa/gnome-dualshell No, it's not AI-generated. It took me over a year to develop this. I'm currently fixing the errors and warning I saw from Shexli. You can reject this version. I'll upload the version with fixes later. Thank you.