Review of "Plaid" version 1

Details Page Preview

Plaid brings tiling to GNOME Shell: dwindle, master-stack and centered master-stack layouts, a floating layout, configurable gaps, animated gradient borders, rounded corners, window blur, remappable keybindings, float rules, a scratchpad, drop-down terminal, and mouse resize/swap.

Extension Homepage
https://github.com/Plyply99/Plaid

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 3

Shexli found 3 issues that may need reviewer attention.

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

  • extension.js:1127
    GLib.file_get_contents(`/proc/${pid}/cmdline`)
  • modules/background-app.js:512
    GLib.file_get_contents(`/proc/${pid}/cmdline`)
  • modules/background-app.js:568
    GLib.file_get_contents(`/proc/${pidN}/status`)
  • modules/background-app.js:537
    f.load_contents(null)
  • modules/pointer-focus.js:162
    GLib.file_get_contents(`/proc/${pid}/cmdline`)
  • modules/terminal-settings.js:75
    f.load_contents(null)
  • modules/terminal-settings.js:112
    f.load_contents(null)

EGO-X-006 warning

extensions should not use lookupByURL or lookupByUUID for current extension access

Use `this`, `this.getSettings()` or `this.path` instead of `lookupByURL()` or `lookupByUUID()` for the current extension.

`extensionUtils`

  • extension.js:3857
    Extension.lookupByUUID('just-perfection-desktop@just-perfection')
  • extension.js:3896
    Extension.lookupByUUID('just-perfection-desktop@just-perfection')

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:108
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (this._destroyed) return false;
                try { this._purgeOrphanBlurs(); } catch (_e) {}
                return false;
            })
  • extension.js:1090
    GLib.timeout_add(GLib.PRIORITY_DEFAULT, 50, tryWarp)
  • extension.js:1854
    GLib.timeout_add(GLib.PRIORITY_DEFAULT, fadeDuration + 100, finishFade)
  • extension.js:1930
                        GLib.timeout_add(GLib.PRIORITY_DEFAULT, 2000, () => {
                            if (this._destroyed) return GLib.SOURCE_REMOVE;
                            if (!settleWin || !settleWin.get_compositor_private()) return GLib.SOURCE_REMOVE;
                            if (!this._windowWorkspa
  • extension.js:1941
    GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, attempt)
  • extension.js:1944
    GLib.timeout_add(GLib.PRIORITY_DEFAULT, 80, attempt)
  • extension.js:2230
            GLib.timeout_add(GLib.PRIORITY_DEFAULT, 200, () => {
                if (this._destroyed) return GLib.SOURCE_REMOVE;
                if (this._landingGivenUp && this._landingGivenUp.has(win)) return GLib.SOURCE_REMOVE;
                // Window-liveness: _removeWindow prunes the given-up set on
            
  • extension.js:268
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (this._destroyed) return GLib.SOURCE_REMOVE;
                if (this._settings && this._settings.get_boolean('terminal-profile-integration'))
                    this._ensureTerminalSettingsProfile();
                else
                    this.
  • extension.js:278
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (this._destroyed) return false;
                this._updateDropOverlaySize();
                const resumeLockCycle = sessionState.lockCycle;
                // Any re-enable within this shell (lock cycle OR manual toggle)
                // must 
  • extension.js:3120
    GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, retry)
  • extension.js:3409
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (this._destroyed) return false;
                this._keyboardFocusChange = false;
                return false;
            })
  • extension.js:3450
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (this._destroyed) return false;
                this._keyboardFocusChange = false;
                return false;
            })
  • extension.js:3605
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (this._destroyed) return false;
                this._keyboardFocusChange = false;
                return false;
            })
  • extension.js:3650
                GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                    this._keyboardFocusChange = false;
                    return false;
                })
  • extension.js:3710
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (this._destroyed) return false;
                this._keyboardFocusChange = false;
                return false;
            })
  • extension.js:666
                        GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                            this._markPendingWindowInvisible(win, win.get_compositor_private());
                            doRetile();
                            return false;
                        })
  • extension.js:690
                        GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                            if (this._destroyed || !this._settings) return false;
                            doRestore();
                            if (this._settings.get_boolean('follow-focus') &&
                                win.get_window_typ
  • extension.js:785
                GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                    if (this._destroyed) return false;
                    this._raiseBackgroundAppClone();
                    return false;
                })
  • extension.js:790
                GLib.timeout_add(GLib.PRIORITY_DEFAULT, 150, () => {
                    if (this._destroyed) return GLib.SOURCE_REMOVE;
                    this._raiseBackgroundAppClone();
                    return GLib.SOURCE_REMOVE;
                })
  • extension.js:868
                GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                    if (this._destroyed) return false;
                    try { target.activate(this._currentTime()); } catch (_e) {}
                    this._keyboardFocusChange = false;
                    return false;
                })

All Versions

Version Status
v51.26 (4) Unreviewed
v51.25 (3) Rejected
2 Rejected
1 Rejected

Previous Reviews on this Version

JustPerfection rejected
Shexli issues need to be fixed first.