Review of "Orcshot" version 0.4.0 (1)

Details Page Preview

Orcshot's tray icon, Wayland clipboard, region/window/eyedropper capture and window list, running inside GNOME Shell. Calls into the Orcshot app; exposes nothing on D-Bus itself.

Extension Homepage
https://github.com/artificialorctelligence/orcshot

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 manual_review 1

Shexli found 4 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

  • capture.js:121
    GLib.file_get_contents(constantsPath)
  • capture.js:1590
    GLib.file_get_contents(geometryPath)

EGO-A-005 manual_review

extensions should not access the clipboard directly

Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.

Review Guidelines

  • capture.js:1723
    St.Clipboard.get_default()

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

  • windows.js:257
    _calls = new WindowCalls()
  • windows.js:257
    new WindowCalls()

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

  • tray.js:129
            this._actionEnabledChangedId = this._actionGroup.connect('action-enabled-changed', (group, name, enabled) => {
                // log(`orcshot-tray-diag: action-enabled-changed name=${name} enabled=${enabled}`);
                // A full rebuild, not a targeted item lookup: this fires
                //
  • tray.js:125
            this._itemsChangedId = this._menuModel.connect('items-changed', (model, pos, removed, added) => {
                // log(`orcshot-tray-diag: items-changed pos=${pos} removed=${removed} added=${added}, get_n_items()=${model.get_n_items()}`);
                this._rebuild();
            })
  • tray.js:102
            this._stageCapturedEventId = global.stage.connect('captured-event', (actor, event) => {
                if (event.type() !== Clutter.EventType.BUTTON_PRESS)
                    return Clutter.EVENT_PROPAGATE;
                if (event.get_button() !== Clutter.BUTTON_PRIMARY)
                    return Clutt
  • tray.js:157
            this.menu.connect('open-state-changed', (menu, open) => {
                // log(`orcshot-tray-diag: menu open-state-changed, open=${open}, numMenuItems=${this.menu.numMenuItems}`);
                if (open)
                    this._refreshSensitivity();
            })

All Versions

Version Status
0.4.0 (1) Unreviewed