Review of "Media Flyout" version 1

Details Page Preview

FluentFlyout-style media flyout for Zorin OS — album art, track info and controls pop up above your dock when music plays.


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 6

Shexli found 6 issues that may need reviewer attention.

EGO-A-004 warning

extension files should not contain excessive ungated console logging

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

No excessive logging

  • extension.js:402
    console.warn('[MediaFlyout] BlurEffect unavailable:', e.message)
  • extension.js:53
    console.error('[MediaFlyout] D-Bus XML parse:', e)
  • extension.js:118
    console.error('[MediaFlyout] watcher cb:', e)
  • extension.js:121
    console.error('[MediaFlyout] startWatcher:', e)
  • extension.js:136
    console.error('[MediaFlyout] scan:', e)
  • extension.js:158
    console.error('[MediaFlyout] props-changed:', e)
  • extension.js:171
    console.error('[MediaFlyout] addPlayer:', e)
  • extension.js:368
    console.error('[MediaFlyout] placeMini:', e)
  • extension.js:535
    console.error('[MediaFlyout] cmd:', e)
  • extension.js:553
    console.error('[MediaFlyout] place:', e)

EGO-P-006 warning

unnecessary build and translation artifacts should not be shipped

Package contains files that often should not be shipped for review.

Don't include unnecessary files

  • install.sh
    install.sh

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

  • extension.js:409
    this._artBin = new St.Bin({ style_class: 'mf-art' })
  • extension.js:410
            this._artIcon = new St.Icon({
                icon_name: 'audio-x-generic-symbolic',
                icon_size: 26,
                style_class: 'mf-art-icon',
            })
  • extension.js:266
    this._miniArtBin = new St.Bin({ style_class: 'mf-mini-art' })
  • extension.js:267
            this._miniArtIcon = new St.Icon({
                icon_name: 'audio-x-generic-symbolic',
                icon_size: 14,
                style_class: 'mf-mini-art-icon',
            })
  • extension.js:275
    this._miniLbl = new St.Label({ style_class: 'mf-mini-label' })
  • extension.js:279
            this._miniPlayBtn = new St.Button({
                style_class: 'mf-mini-btn',
                child: new St.Icon({
                    icon_name: 'media-playback-pause-symbolic',
                    icon_size: 13,
                }),
            })

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:409
    this._artBin = new St.Bin({ style_class: 'mf-art' })
  • extension.js:410
            this._artIcon = new St.Icon({
                icon_name: 'audio-x-generic-symbolic',
                icon_size: 26,
                style_class: 'mf-art-icon',
            })
  • extension.js:266
    this._miniArtBin = new St.Bin({ style_class: 'mf-mini-art' })
  • extension.js:267
            this._miniArtIcon = new St.Icon({
                icon_name: 'audio-x-generic-symbolic',
                icon_size: 14,
                style_class: 'mf-mini-art-icon',
            })
  • extension.js:275
    this._miniLbl = new St.Label({ style_class: 'mf-mini-label' })
  • extension.js:279
            this._miniPlayBtn = new St.Button({
                style_class: 'mf-mini-btn',
                child: new St.Icon({
                    icon_name: 'media-playback-pause-symbolic',
                    icon_size: 13,
                }),
            })

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:454
            this._flyout.connect('notify::hover', () => {
                try {
                    if (this._flyout?.hover) this._clearTimer();
                    else this._resetTimer(LINGER_MS);
                } catch (_) {}
            })
  • extension.js:286
            this._miniPlayBtn.connect('clicked', (btn) => {
                btn.stop_emission_by_name('clicked'); // don't bubble to pill click
                try { this._cmd('PlayPause'); } catch (_) {}
            })
  • extension.js:310
            this._miniPlayer.connect('button-press-event', () => {
                this._toggleFlyout();
                return Clutter.EVENT_PROPAGATE;
            })
  • extension.js:434
    this._nextBtn.connect('clicked', () => { try { this._cmd('Next'); } catch (_) {} })
  • extension.js:433
    this._playBtn.connect('clicked', () => { try { this._cmd('PlayPause'); } catch (_) {} })
  • extension.js:432
    this._prevBtn.connect('clicked', () => { try { this._cmd('Previous'); } catch (_) {} })

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

  • extension.js:542
            GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
                if (!this._flyout || !this._enabled) return GLib.SOURCE_REMOVE;
                try {
                    const mon = Main.layoutManager.primaryMonitor;
                    if (!mon) return GLib.SOURCE_REMOVE;
                    const w = Math.m

All Versions

Version Status
1 Unreviewed