Review of "Mosaic" version 1.8.1 (19)

Details Page Preview

Window tiler extension for GNOME desktops.

Extension Homepage
https://github.com/jardon/gnome-mosaic

No comments.

Diff Against

Files

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

Shexli (experimental) error 3 warning 5

Shexli found 8 issues that may need reviewer attention.

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

Meta.Window

  • auto_tiler.js:408
    focused.meta.get_maximized()
  • window.js:267
    this.meta.get_maximized()
  • window.js:726
    meta.get_maximized()

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

  • config.js:224
    file.value.load_contents(null)
  • utils.js:179
    GLib.file_get_contents('/etc/os-release')
  • utils.js:23
    file.load_contents(null)

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

Meta.Window

  • extension.js:999
    win.meta.maximize(Meta.MaximizeFlags.BOTH)
  • extension.js:645
    prev.meta.unmaximize(Meta.MaximizeFlags.BOTH)
  • extension.js:767
    compare.meta.unmaximize(Meta.MaximizeFlags.BOTH)
  • extension.js:988
    win.meta.unmaximize(Meta.MaximizeFlags.BOTH)
  • tiling.js:553
    win.meta.unmaximize(Meta.MaximizeFlags.BOTH)
  • window.js:328
    meta.unmaximize(Meta.MaximizeFlags.BOTH)

EGO-X-003 warning

extensions should not call run_dispose in extension code

Extension code should not call `run_dispose()`.

GObject.Object.run_dispose

  • prefs.js:230
    keyController.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

  • context.js
  • floating_exceptions/config.js
  • floating_exceptions/main.js
  • floating_exceptions/utils.js

EGO-L-001 warning

extension must not create GObject instances or modify shell before enable()

Resource creation or signal/source setup was found outside `enable()`.

Only use initialization for static resources

  • extension.js:114
                this.settings.int.connect('changed::gtk-theme', () => {
                    this.register(Events.global(GlobalEvent.GtkThemeChanged));
                })
  • extension.js:119
                this.settings.shell.connect('changed::name', () => {
                    this.register(Events.global(GlobalEvent.GtkShellChanged));
                })
  • extension.js:2279
    id = actor.connect('first-frame', () => {
                        if (this.grab_op !== null) {
                            this.schedule_deferred_tile(win);
                        }
                        else {
                            this.tile_instant(win);
                        }
                        actor.discon
  • extension.js:2279
    actor.connect('first-frame', () => {
                        if (this.grab_op !== null) {
                            this.schedule_deferred_tile(win);
                        }
                        else {
                            this.tile_instant(win);
                        }
                        actor.disconnect(
  • extension.js:1884
                this.schedule_idle_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
                    if (!this.movements.is_empty())
                        return true;
                    return func();
                })
  • extension.js:1884
    GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
                    if (!this.movements.is_empty())
                        return true;
                    return func();
                })
  • extension.js:2206
    GLib.timeout_add(GLib.PRIORITY_LOW, 100, check)
  • extension.js:677
                this.border_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 250, () => {
                    this.is_switching_workspace = false;
                    this.show_border_on_focused();
                    this.border_timeout = null;
                    return GLib.SOURCE_REMOVE;
                })
  • extension.js:677
    GLib.timeout_add(GLib.PRIORITY_DEFAULT, 250, () => {
                    this.is_switching_workspace = false;
                    this.show_border_on_focused();
                    this.border_timeout = null;
                    return GLib.SOURCE_REMOVE;
                })
  • extension.js:453
            this.exception_select_timeout = GLib.timeout_add(GLib.PRIORITY_LOW, 500, () => {
                this.exception_selecting = true;
                overview.show();
                return false;
            })

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

  • panel_settings.js:28
            this._toggle.connect('clicked', () => {
                ext.toggle_tiling();
            })
  • panel_settings.js:73
            item.connect('activate', () => {
                ext.exception_dialog();
            })
  • panel_settings.js:80
            item.connect('activate', () => {
                ext.open_settings();
            })
  • panel_settings.js:52
            item.connect('toggled', (_, state) => {
                ext.settings.set_smart_gaps(state);
            })
  • panel_settings.js:59
            item.connect('toggled', (_, state) => {
                ext.settings.set_active_hint(state);
            })
  • panel_settings.js:66
            item.connect('toggled', (_, state) => {
                ext.settings.set_mouse_cursor_follows_active_window(state);
            })

EGO-M-004 error

metadata shell-version must only include plausible stable releases and at most one development release

Field `shell-version` contains invalid values, more than one development release, or implausible future releases.

metadata.json must be well-formed

  • metadata.json
    shell-version=['45', '46', '47', '48', '49', '50', '51']

All Versions

Version Status
1.8.1 (19) Active
1.8.0 (18) Active
1.7.1 (17) Active
1.7.0 (16) Inactive
1.7.0 (15) Rejected
1.6.5 (14) Active
1.6.4 (13) Active
1.6.3 (12) Active
1.6.2 (11) Active
1.6.1 (10) Active
1.6.0 (9) Active
1.6.0 (8) Rejected
1.5.0 (7) Active
6 Rejected
5 Rejected
4 Inactive
3 Rejected
2 Rejected
1 Rejected

Previous Reviews on this Version

JustPerfection active