Review of "Better Quick Settings" version 1

Details Page Preview

beQS: Better Quick Settings. A powerful extension to tweak and enhance GNOME's Quick Settings.

Extension Homepage
https://github.com/unaibenidorm/beQS

No comments.

FAQ

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

Shexli (experimental) warning 8

Shexli found 8 issues that may need reviewer attention.

EGO-A-004 warning

extension files should not contain excessive ungated console logging

File contains 13 ungated console.log/warn/error calls (threshold: 5).

No excessive logging

  • features/widget/media.js:311
    console.log(`[beQS] Media: Error parsing metadata: ${e}`)
  • features/widget/media.js:316
    console.log(`[beQS] iTunes: Uncaught error: ${e}`)
  • features/widget/media.js:360
    console.log("[beQS] iTunes: Skipping – no valid title found.")
  • features/widget/media.js:380
    console.log(`[beQS] iTunes: Querying ${apiUrl}`)
  • features/widget/media.js:385
    console.log("[beQS] iTunes: Empty response from API")
  • features/widget/media.js:393
    console.log(`[beQS] iTunes: JSON parse error: ${e}. Preview: ${responseText.substring(0, 120)}`)
  • features/widget/media.js:398
    console.log("[beQS] iTunes: No results found")
  • features/widget/media.js:405
    console.log(`[beQS] iTunes: Found artwork: ${artworkUrl1000}`)
  • features/widget/media.js:415
    console.log(`[beQS] iTunes: Cache hit – ${coverPath}`)
  • features/widget/media.js:422
    console.log(`[beQS] iTunes: Downloading cover to ${coverPath}`)

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()`.

File Operations

  • global.js:80
    DbusFile.load_contents(null)
  • global.js:89
    shaderFile.load_contents(null)

EGO-X-003 warning

extensions should not call run_dispose in extension code

Extension code should not call `run_dispose()`.

GObject.Object.run_dispose

  • libs/shared/maid.js:74
    record[2].run_dispose()

EGO-P-007 warning

JavaScript files should be reachable from extension.js or prefs.js

Some JavaScript files are not reachable from `extension.js` or `prefs.js` imports.

Don't include unnecessary files

  • features/layout/sound.js
  • libs/shell/compat.js
  • libs/shell/effects.js
  • libs/types/quickSettingsOrderItem.js

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.

Destroy all objects

  • features/widget/media.js:708
    this._marqueeTitle = new MarqueeLabel({ style_class: titleLabel.style_class || "message-title", x_expand: true })
  • features/widget/media.js:677
    this._progressControl = ctrl

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`.

Destroy all objects

  • extension.js:196
    this._settings = this.getSettings()
  • features/widget/media.js:708
    this._marqueeTitle = new MarqueeLabel({ style_class: titleLabel.style_class || "message-title", x_expand: true })
  • features/widget/media.js:677
    this._progressControl = ctrl

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.

Disconnect all signals

  • extension.js:224
    mixer.connect("input-added", () => _applyAll(settings))

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.

Remove main loop sources

  • features/widget/media.js:162
            this._scrollId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 30, () => {
                pos += 0.5 * dir;
                if (pos >= max + 20) { dir = -1; return GLib.SOURCE_CONTINUE; }
                if (pos <= -20)      { dir =  1; return GLib.SOURCE_CONTINUE; }
                adj.set_value(Math.max(0, Mat
  • features/widget/media.js:147
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (this.mapped && this._enabled) this._start();
                return GLib.SOURCE_REMOVE;
            })
  • features/widget/media.js:692
    GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { this._setupMarquee(); return GLib.SOURCE_REMOVE; })
  • features/widget/media.js:1084
                this._emptyTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 800, () => {
                    this.visible = false; this._emptyTimeoutId = 0; return GLib.SOURCE_REMOVE;
                })
  • libs/shell/cava.js:64
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (this.get_stage()) {
                    this._startCava();
                }
                return GLib.SOURCE_REMOVE;
            })

All Versions

Version Status
5 Unreviewed
4 Rejected
3 Rejected
2 Rejected
1 Unreviewed

Previous Reviews on this Version

unaibenidorm posted a review
v1 is targeted for deletion due to bugs