Review of "Mosaic" version 1.6.1 (10)

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 2 warning 5

Shexli found 7 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:200
    this.meta.get_maximized()
  • window.js:218
    this.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:214
    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:1011
    win.meta.maximize(Meta.MaximizeFlags.BOTH)
  • extension.js:661
    prev.meta.unmaximize(Meta.MaximizeFlags.BOTH)
  • extension.js:780
    compare.meta.unmaximize(Meta.MaximizeFlags.BOTH)
  • extension.js:1000
    win.meta.unmaximize(Meta.MaximizeFlags.BOTH)
  • tiling.js:550
    win.meta.unmaximize(Meta.MaximizeFlags.BOTH)
  • window.js:270
    meta.unmaximize(Meta.MaximizeFlags.BOTH)

EGO-P-006 warning

unnecessary build and translation artifacts should not be shipped

Compiled GSettings schemas should not be shipped for 45+ packages.

Don't include unnecessary files

  • schemas/gschemas.compiled
    schemas/gschemas.compiled

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:2196
    id = actor.connect('first-frame', () => {
                        this.auto_tiler?.auto_tile(this, win, this.init);
                        grab_focus();
                        actor.disconnect(id);
                    })
  • extension.js:2196
    actor.connect('first-frame', () => {
                        this.auto_tiler?.auto_tile(this, win, this.init);
                        grab_focus();
                        actor.disconnect(id);
                    })
  • extension.js:1894
                this.schedule_idle_timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
                    if (!this.movements.is_empty())
                        return true;
                    return func();
                })
  • extension.js:1894
    GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
                    if (!this.movements.is_empty())
                        return true;
                    return func();
                })
  • extension.js:692
                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:692
    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:450
            this.exception_select_timeout = GLib.timeout_add(GLib.PRIORITY_LOW, 500, () => {
                this.exception_selecting = true;
                overview.show();
                return false;
            })
  • extension.js:450
    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:26
            this._toggle.connect('clicked', () => {
                ext.toggle_tiling();
            })
  • panel_settings.js:71
            item.connect('activate', () => {
                ext.exception_dialog();
            })
  • panel_settings.js:78
            item.connect('activate', () => {
                ext.open_settings();
            })
  • panel_settings.js:50
            item.connect('toggled', (_, state) => {
                ext.settings.set_smart_gaps(state);
            })
  • panel_settings.js:57
            item.connect('toggled', (_, state) => {
                ext.settings.set_active_hint(state);
            })
  • panel_settings.js:64
            item.connect('toggled', (_, state) => {
                ext.settings.set_mouse_cursor_follows_active_window(state);
            })

All Versions

Version Status
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

jadahl active
warnings/errors are either invalid (old maximize api is used as a fallback), or also not something introduced, so approving.