Review of "Kiwi Menu" version 1.5.8 (19)

Details Page Preview

macOS-inspired quick menu for GNOME ## Features * Recent Items * Power menu * Hide Quicksettings buttons * Hide Activities buttons * Custom App Store Command * One Personalized Menu Item * macOS style user switcher * Multilingual support

Extension Homepage
https://github.com/kem-a/kiwi-menu

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

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

  • prefs.js:113
          restoreButton.connect('clicked', () => {
            appStoreCommandRow.set_text(defaultAppStoreCommand);
            clearEntryFocus();
          })
  • prefs.js:118
          acceptButton.connect('clicked', () => {
            clearEntryFocus();
          })
  • prefs.js:200
          labelRestoreButton.connect('clicked', () => {
            customMenuLabelRow.set_text(defaultMenuLabel);
            clearLabelFocus();
          })
  • prefs.js:205
          labelAcceptButton.connect('clicked', () => {
            clearLabelFocus();
          })
  • prefs.js:279
          commandRestoreButton.connect('clicked', () => {
            customMenuCommandRow.set_text(defaultMenuCommand);
            clearCommandFocus();
          })
  • prefs.js:284
          commandAcceptButton.connect('clicked', () => {
            clearCommandFocus();
          })
  • prefs.js:136
          focusController.connect('enter', () => {
            acceptButton.set_visible(true);
          })
  • prefs.js:223
          labelFocusController.connect('enter', () => {
            labelAcceptButton.set_visible(true);
          })
  • prefs.js:302
          commandFocusController.connect('enter', () => {
            commandAcceptButton.set_visible(true);
          })
  • prefs.js:126
          keyController.connect('key-pressed', (controller, keyval) => {
            if (keyval === Gdk.KEY_Escape) {
              clearEntryFocus();
              return true;
            }
            return false;
          })
  • prefs.js:213
          labelKeyController.connect('key-pressed', (controller, keyval) => {
            if (keyval === Gdk.KEY_Escape) {
              clearLabelFocus();
              return true;
            }
            return false;
          })
  • prefs.js:292
          commandKeyController.connect('key-pressed', (controller, keyval) => {
            if (keyval === Gdk.KEY_Escape) {
              clearCommandFocus();
              return true;
            }
            return false;
          })
  • prefs.js:139
          focusController.connect('leave', () => {
            acceptButton.set_visible(false);
          })
  • prefs.js:226
          labelFocusController.connect('leave', () => {
            labelAcceptButton.set_visible(false);
          })
  • prefs.js:305
          commandFocusController.connect('leave', () => {
            commandAcceptButton.set_visible(false);
          })
  • prefs.js:395
            toggle.connect('notify::active', (widget) => {
              this._settings.set_boolean(key, widget.get_active());
            })
  • prefs.js:413
          activityMenuSwitch.connect('notify::active', (widget) => {
            this._settings.set_boolean('activity-menu-visibility', !widget.get_active());
          })
  • prefs.js:315
          customMenuExpanderRow.connect('notify::enable-expansion', (widget) => {
            const isEnabled = widget.get_enable_expansion();
            this._settings.set_boolean('custom-menu-enabled', isEnabled);
          })
  • prefs.js:402
          iconSelectorRow.connect('notify::selected', (widget) => {
            this._settings.set_int('icon', widget.selected);
          })
  • prefs.js:122
    appStoreCommandRow.connect('notify::text', updateRestoreButtonState)
  • prefs.js:209
    customMenuLabelRow.connect('notify::text', updateLabelRestoreButtonState)
  • prefs.js:288
    customMenuCommandRow.connect('notify::text', updateCommandRestoreButtonState)
  • src/forceQuitOverlay.js:109
    this._capture.connect('captured-event', (_capture, event) => this._onEvent(event))
  • src/forceQuitOverlay.js:110
    this._capture.connect('stop', () => this.emit('stop'))

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

  • src/kiwimenu.js:24
    file.load_contents(null)
  • src/recentItemsSubmenu.js:855
    file.load_contents(null)
  • src/recentItemsSubmenu.js:982
    file.load_contents(null)

All Versions

Version Status
1.5.9 (21) Active
1.5.8 (20) Rejected
1.5.8 (19) Rejected
1.5.7 (18) Active
1.5.7 (17) Inactive
1.5.6 (16) Active
1.5.6 (15) Rejected
1.5.5 (14) Active
1.5.4 (13) Active
1.5.2 (12) Active
1.5.1 (11) Active
1.5.0 (10) Active
1.5.0 (9) Rejected
1.4.0 (8) Active
1.3.0 (7) Active
1.3.0 (6) Rejected
1.2.0 (5) Active
1.1.1 (4) Active
1.1.0 (3) Active
1.0.1 (2) Active
1.0.0 (1) Rejected

Previous Reviews on this Version

Arnis K posted a review
EGO015 - This warning is a false positive because it is being incorrectly applied to prefs.js. The rule that "signals connected by extension should be disconnected in disable()" is critically important for extension.js
Arnis K auto- rejected
Auto-rejected because of new version 1.5.8 (20) was uploaded