Review of "Superbar" version 12

Details Page Preview

Superbar is a keyboard-driven, system-wide launcher and command bar for GNOME Shell. It reads the clipboard to provide clipboard history, forwards generic queries to GNOME application search providers enabled by the user, and sends user-entered weather locations, dictionary terms, and currency conversions to open-meteo.com, dictionaryapi.dev, and frankfurter.app.

Extension Homepage
https://github.com/Furkan-rgb/superbar

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

Shexli found 5 issues that may need reviewer attention.

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

  • extension.js:397
    St.Clipboard.get_default()

EGO-A-004 warning

extension files should not contain excessive ungated console logging

File contains 8 ungated console.log/warn/error calls (threshold: 5).

No excessive logging

  • extension.js:858
        console.warn(
          `Superbar: mutter refused the keybinding name ` +
            `"${TOGGLE_KEYBINDING_NAME}"; another extension has registered it`,
        )
  • extension.js:918
          console.warn(
            `Superbar: could not check the shortcut for conflicts: ${error}`,
          )
  • extension.js:363
    console.error(`Superbar: cleanup after a failed enable also failed: ${cleanupError}`)
  • extension.js:978
    console.error(`Superbar: could not take over the shortcut: ${error}`)
  • extension.js:1398
    console.error(`Superbar: failed to open the search bar: ${error}`)
  • extension.js:2760
    console.error(`[Superbar] Action failed (${result.label}): ${e.message}`)
  • extension.js:3481
    console.error(`[Superbar] Failed to launch app: ${e}`)
  • extension.js:3493
              console.error(
                `[Superbar] Search provider activation failed: ${error}`,
              )

EGO-L-002 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:612
        this._actionsHint = new St.BoxLayout({
          style_class: "spotlight-actions-hint",
          vertical: false,
          y_align: Clutter.ActorAlign.CENTER,
        })
  • extension.js:617
        this._actionsKey = new St.Label({
          text: ">",
          style_class: "spotlight-footer-key spotlight-actions-key",
        })
  • extension.js:476
        this._contentLayer = new St.BoxLayout({
          style_class: "spotlight-content",
          vertical: true,
          x_expand: true,
          y_expand: true,
        })
  • extension.js:497
        this._entry = new St.Entry({
          hint_text: "Search",
          style_class: "spotlight-entry",
          can_focus: true,
          x_expand: true,
          y_align: Clutter.ActorAlign.CENTER,
        })
  • extension.js:607
        this._footer = new St.BoxLayout({
          style_class: "spotlight-footer",
          vertical: false,
          x_expand: true,
        })
  • extension.js:601
        this._footerDivider = new St.Widget({
          style_class: "spotlight-divider spotlight-footer-divider",
          x_expand: true,
        })
  • extension.js:632
        this._footerHints = new St.BoxLayout({
          style_class: "spotlight-footer-hints",
          vertical: false,
          x_align: Clutter.ActorAlign.END,
          y_align: Clutter.ActorAlign.CENTER,
        })
  • extension.js:629
    this._footerSpacer = new St.Widget({ x_expand: true })
  • extension.js:535
        this._headerDivider = new St.Widget({
          style_class: "spotlight-divider",
          x_expand: true,
        })
  • extension.js:491
        this._icon = new St.Icon({
          icon_name: "system-search-symbolic",
          style_class: "spotlight-icon",
          y_align: Clutter.ActorAlign.CENTER,
        })
  • extension.js:486
        this._inputRow = new St.BoxLayout({
          style_class: "spotlight-input-row",
          vertical: false,
        })
  • extension.js:471
        this._materialLayer = new St.Widget({
          style_class: "spotlight-material",
          x_expand: true,
          y_expand: true,
        })
  • extension.js:520
        this._modeDot = new St.Widget({
          style_class: "spotlight-mode-dot",
          y_align: Clutter.ActorAlign.CENTER,
        })
  • extension.js:508
        this._modeIndicator = new St.BoxLayout({
          style_class: "spotlight-mode-indicator",
          vertical: false,
          reactive: false,
          can_focus: false,
          y_align: Clutter.ActorAlign.CENTER,
        })
  • extension.js:515
        this._modeInner = new St.BoxLayout({
          style_class: "spotlight-mode-inner",
          vertical: false,
          y_align: Clutter.ActorAlign.CENTER,
        })
  • extension.js:541
        this._resultsBox = new St.BoxLayout({
          style_class: "spotlight-results-box",
          vertical: true,
          x_expand: true,
        })
  • extension.js:581
        this._resultsClip = new St.Widget({
          style_class: "spotlight-results-clip",
          layout_manager: new Clutter.BinLayout(),
          x_expand: true,
          clip_to_allocation: true,
        })
  • extension.js:570
        this._resultsScroll = new St.ScrollView({
          style_class: "spotlight-results-scroll",
          x_expand: true,
          overlay_scrollbars: true,
        })
  • extension.js:547
        this._statusBox = new St.BoxLayout({
          style_class: "spotlight-status",
          vertical: true,
          x_expand: true,
          y_expand: true,
          visible: 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

  • extension.js:989
        dialog.connect("closed", () => {
          this._conflictDialog = null;
        })

EGO-L-004 warning

main loop sources should be removed in disable()

Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.

Remove main loop sources

  • extension.js:1974
        this._clipboardPollId = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          1200,
          () => {
            this._pollClipboard();
            return GLib.SOURCE_CONTINUE;
          },
        )
  • extension.js:886
        this._conflictPromptId = GLib.timeout_add_seconds(
          GLib.PRIORITY_DEFAULT,
          CONFLICT_PROMPT_RETRY_SECONDS,
          () => {
            if (!this._enabled) {
              this._conflictPromptId = null;
              return GLib.SOURCE_REMOVE;
            }
    
            if (Main.actionMode === Shell.ActionMo
  • extension.js:3639
        this._resultsHeightTimeoutId = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          0,
          () => {
            this._resultsHeightTimeoutId = null;
            if (this._enabled) this._updateResultsHeight(false);
            return GLib.SOURCE_REMOVE;
          },
        )
  • extension.js:1780
        this._searchTimeout = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          delay,
          () => {
            this._searchTimeout = null;
            if (this._isCurrentQuery(text, generation)) callback();
            return GLib.SOURCE_REMOVE;
          },
        )
  • extension.js:3583
        this._selectionScrollTimeoutId = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          0,
          () => {
            this._selectionScrollTimeoutId = null;
            this._scrollToSelection();
            return GLib.SOURCE_REMOVE;
          },
        )

All Versions

Version Status
14 Unreviewed
13 Rejected
12 Rejected
11 Rejected
10 Rejected
9 Rejected
8 Rejected
7 Rejected
6 Rejected
5 Rejected
4 Rejected
3 Rejected
2 Rejected
1 Rejected

Previous Reviews on this Version

furkan12 auto- rejected
Auto-rejected because of new version 13 was uploaded