Review of "Script Launcher" version 1.1.0 (1)

Details Page Preview

Launch scripts from the top panel with search, pinning, and right-click actions

Extension Homepage
https://github.com/enginyilmaaz/gnome_extension_script_launcher

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.

EGO015 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:98
          this._fileMonitor.connect('changed', () => {
            // Debounce the refresh to avoid too many updates
            if (this._refreshTimeout) {
              GLib.source_remove(this._refreshTimeout);
            }
            this._refreshTimeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 500, () => {
             
  • extension.js:581
        this._indicator.connect('button-press-event', (actor, event) => {
          if (event.get_button() === Clutter.BUTTON_SECONDARY) {
            if (this._indicator.menu.isOpen)
              this._indicator.menu.close();
            this._destroyScriptContextMenu();
            this._contextMenu.toggle();
            re
  • extension.js:603
        this._scriptContextSourceActor.connect('button-press-event', () => {
          if (this._scriptContextMenu?.isOpen) {
            this._scriptContextMenu.close(BoxPointer.PopupAnimation.FULL);
          }
          return Clutter.EVENT_STOP;
        })
  • extension.js:159
        actor.connect('destroy', () => {
          if (this._hoverCursorActor === actor) {
            this._hoverCursorActor = null;
            global.display.set_cursor(Meta.Cursor.DEFAULT);
          }
        })
  • extension.js:145
        actor.connect('enter-event', () => {
          this._hoverCursorActor = actor;
          global.display.set_cursor(Meta.Cursor.POINTING_HAND);
          return Clutter.EVENT_PROPAGATE;
        })
  • extension.js:151
        actor.connect('leave-event', () => {
          if (this._hoverCursorActor === actor) {
            this._hoverCursorActor = null;
            global.display.set_cursor(Meta.Cursor.DEFAULT);
          }
          return Clutter.EVENT_PROPAGATE;
        })
  • extension.js:352
        menu.connect('open-state-changed', (popup, open) => {
          if (!open && this._scriptContextMenu === popup) {
            this._destroyScriptContextMenu();
          }
        })

EGO014 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:391
    this._scriptContextMenu = menu
  • extension.js:610
        this._scriptContextMenuManager = new PopupMenu.PopupMenuManager({
          actor: this._scriptContextSourceActor,
        })

EGO030 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

  • locale.js:33
    file.load_contents(null)

All Versions

Version Status
1.1.0 (5) Unreviewed
1.1.0 (4) Rejected
1.1.0 (3) Rejected
1.1.0 (2) Rejected
1.1.0 (1) Rejected

Previous Reviews on this Version

enginyilmaaz auto- rejected
Auto-rejected because of new version 1.1.0 (2) was uploaded