Review of "GNOME Launcher" version 2.0 (2)

Details Page Preview

Fast, lightweight, highly customizable launcher with fuzzy search, custom commands and actions, themes, an emoji picker, clipboard images, a password vault and optional file search.

Extension Homepage
https://github.com/MaouNour/gnome-app-launcher-extension

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 3

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

  • clipboard/history.js:249
    St.Clipboard.get_default()
  • clipboard/history.js:662
    St.Clipboard.get_default()
  • clipboard/history.js:709
    St.Clipboard.get_default()
  • clipboard/history.js:721
    St.Clipboard.get_default()
  • emoji/paste.js:31
    St.Clipboard.get_default()

EGO-A-001 manual_review

extension code must not be minified or obfuscated

File appears obfuscated: 64% of identifiers are 1–2 characters (avg length 2.8).

Code must not be obfuscated

  • clipboard/image.js
    short identifier ratio: 64%, identifiers scored: 162

EGO-X-003 warning

extensions should not call run_dispose in extension code

Extension code should not call `run_dispose()`.

GObject.Object.run_dispose

  • emoji/paste.js:106
    this._dev?.run_dispose?.()

EGO-A-001 manual_review

extension code must not be minified or obfuscated

File appears obfuscated: 79% of identifiers are 1–2 characters (avg length 2.5).

Code must not be obfuscated

  • ui/styleInputs.js
    short identifier ratio: 79%, identifiers scored: 53

EGO-P-007 warning

JavaScript files should be reachable from extension.js or prefs.js

Some JavaScript files are not reachable from `extension.js` or `prefs.js` imports.

Don't include unnecessary files

  • tools/bench.mjs
  • tools/gen-emoji.mjs

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

  • ui/launcher.js:166
    this.actor = new St.Bin({reactive: true, child: this.label})
  • ui/launcher.js:165
    this.label = new St.Label({x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:207
    this.actor = new St.BoxLayout({vertical: true, x_expand: true})
  • ui/launcher.js:209
    this.header = new St.Bin({child: this.title, x_expand: true, visible: false})
  • ui/launcher.js:210
    this.line = new St.BoxLayout({x_expand: true})
  • ui/launcher.js:208
    this.title = new St.Label({x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.END})
  • ui/launcher.js:248
    this.actor = new St.BoxLayout({reactive: true, x_expand: true})
  • ui/launcher.js:252
    this.glyph = new St.Label({visible: false, y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:249
    this.icon = new St.Icon({fallback_icon_name: FALLBACK_ICON, x_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:250
    this.iconBox = new St.BoxLayout({vertical: true, y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:257
    this.mark = new St.Widget({y_align: Clutter.ActorAlign.CENTER, visible: false})
  • ui/launcher.js:255
    this.sub = new St.Label({x_expand: true})
  • ui/launcher.js:256
    this.tag = new St.Label({y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:253
    this.text = new St.BoxLayout({vertical: true, x_expand: true, y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:254
    this.title = new St.Label({x_expand: true})

EGO-L-005 warning

owned object references should be released in disable()

Owned references that are cleaned up in `disable()` should also be released with `null` or `undefined`.

Destroy all objects

  • extension.js:113
    this._iface = new Gio.Settings({schema_id: 'org.gnome.desktop.interface'})
  • ui/launcher.js:166
    this.actor = new St.Bin({reactive: true, child: this.label})
  • ui/launcher.js:165
    this.label = new St.Label({x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:207
    this.actor = new St.BoxLayout({vertical: true, x_expand: true})
  • ui/launcher.js:209
    this.header = new St.Bin({child: this.title, x_expand: true, visible: false})
  • ui/launcher.js:210
    this.line = new St.BoxLayout({x_expand: true})
  • ui/launcher.js:208
    this.title = new St.Label({x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.END})
  • ui/launcher.js:248
    this.actor = new St.BoxLayout({reactive: true, x_expand: true})
  • ui/launcher.js:252
    this.glyph = new St.Label({visible: false, y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:249
    this.icon = new St.Icon({fallback_icon_name: FALLBACK_ICON, x_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:250
    this.iconBox = new St.BoxLayout({vertical: true, y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:257
    this.mark = new St.Widget({y_align: Clutter.ActorAlign.CENTER, visible: false})
  • ui/launcher.js:255
    this.sub = new St.Label({x_expand: true})
  • ui/launcher.js:256
    this.tag = new St.Label({y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:253
    this.text = new St.BoxLayout({vertical: true, x_expand: true, y_align: Clutter.ActorAlign.CENTER})
  • ui/launcher.js:254
    this.title = new St.Label({x_expand: true})

All Versions

Version Status
2.0 (2) Unreviewed
1.0 (1) Waiting for author

Previous Reviews on this Version

MaourNournar posted a review
I will be happy to edit anything of the extension like warnings shexli is displaying btw. but i will wait for review first to choose wether to refactor or rewrite the extension