Review of "Superbar" version 4

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

Shexli found 4 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:156
    St.Clipboard.get_default()
  • extension.js:1755
    St.Clipboard.get_default()

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:196
        this._entry = new St.Entry({
          hint_text: "Search apps, windows, files, or math…",
          style_class: "spotlight-entry",
          can_focus: true,
          x_expand: true,
          y_align: Clutter.ActorAlign.CENTER,
        })
  • extension.js:190
        this._icon = new St.Icon({
          icon_name: "system-search-symbolic",
          style_class: "spotlight-icon",
          y_align: Clutter.ActorAlign.CENTER,
        })
  • extension.js:185
        this._inputRow = new St.BoxLayout({
          style_class: "spotlight-input-row",
          vertical: false,
        })
  • extension.js:208
        this._resultsBox = new St.BoxLayout({
          style_class: "spotlight-results-box",
          vertical: true,
          x_expand: true,
        })
  • extension.js:225
        this._resultsClip = new St.Widget({
          style_class: "spotlight-results-clip",
          layout_manager: new Clutter.BinLayout(),
          x_expand: true,
          clip_to_allocation: true,
        })
  • extension.js:214
        this._resultsScroll = new St.ScrollView({
          style_class: "spotlight-results-scroll",
          x_expand: true,
          overlay_scrollbars: true,
        })

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:867
        this._clipboardPollId = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          1200,
          () => {
            this._pollClipboard();
            return GLib.SOURCE_CONTINUE;
          },
        )
  • extension.js:1706
        this._resultsHeightTimeoutId = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          0,
          () => {
            this._resultsHeightTimeoutId = null;
            if (!this._resultsBox) return GLib.SOURCE_REMOVE;
    
            const [, naturalHeight] = this._resultsBox.get_preferred_height(
              this._re
  • extension.js:698
        this._searchTimeout = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          FILE_SEARCH_DELAY_MS,
          () => {
            this._searchTimeout = null;
            if (!this._isCurrentQuery(text, generation))
              return GLib.SOURCE_REMOVE;
    
            const cancellable = new Gio.Cancellable();
           
  • extension.js:1807
        this._selectionScrollTimeoutId = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          0,
          () => {
            this._selectionScrollTimeoutId = null;
            this._scrollToSelection();
            return GLib.SOURCE_REMOVE;
          },
        )

EGO-L-007 warning

main loop sources should be removed before being recreated

Main loop sources should be removed before creating a new source on the same field.

Remove main loop sources

  • extension.js:735
        this._searchTimeout = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          REMOTE_SEARCH_DELAY_MS,
          () => {
            this._searchTimeout = null;
            if (!this._isCurrentQuery(text, generation))
              return GLib.SOURCE_REMOVE;
    
            const cancellable = new Gio.Cancellable();
         

All Versions

Version Status
10 Unreviewed
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 5 was uploaded