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.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
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()`.
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.
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.
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;
})
| Version | Status |
|---|---|
| v51.26 (4) | Unreviewed |
| v51.25 (3) | Rejected |
| 2 | Rejected |
| 1 | Rejected |