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.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-A-005 manual_review
extensions should not access the clipboard directly
Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.
extension.js:316
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.
extension.js:508
this._actionsHint = new St.BoxLayout({
style_class: "spotlight-actions-hint",
vertical: false,
y_align: Clutter.ActorAlign.CENTER,
})
extension.js:372
this._contentLayer = new St.BoxLayout({
style_class: "spotlight-content",
vertical: true,
x_expand: true,
y_expand: true,
})
extension.js:393
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:503
this._footer = new St.BoxLayout({
style_class: "spotlight-footer",
vertical: false,
x_expand: true,
})
extension.js:497
this._footerDivider = new St.Widget({
style_class: "spotlight-divider spotlight-footer-divider",
x_expand: true,
})
extension.js:529
this._footerHints = new St.BoxLayout({
style_class: "spotlight-footer-hints",
vertical: false,
x_align: Clutter.ActorAlign.END,
y_align: Clutter.ActorAlign.CENTER,
})
extension.js:526
this._footerSpacer = new St.Widget({ x_expand: true })
extension.js:431
this._headerDivider = new St.Widget({
style_class: "spotlight-divider",
x_expand: true,
})
extension.js:387
this._icon = new St.Icon({
icon_name: "system-search-symbolic",
style_class: "spotlight-icon",
y_align: Clutter.ActorAlign.CENTER,
})
extension.js:382
this._inputRow = new St.BoxLayout({
style_class: "spotlight-input-row",
vertical: false,
})
extension.js:367
this._materialLayer = new St.Widget({
style_class: "spotlight-material",
x_expand: true,
y_expand: true,
})
extension.js:416
this._modeDot = new St.Widget({
style_class: "spotlight-mode-dot",
y_align: Clutter.ActorAlign.CENTER,
})
extension.js:404
this._modeIndicator = new St.BoxLayout({
style_class: "spotlight-mode-indicator",
vertical: false,
reactive: false,
can_focus: false,
y_align: Clutter.ActorAlign.CENTER,
})
extension.js:411
this._modeInner = new St.BoxLayout({
style_class: "spotlight-mode-inner",
vertical: false,
y_align: Clutter.ActorAlign.CENTER,
})
extension.js:437
this._resultsBox = new St.BoxLayout({
style_class: "spotlight-results-box",
vertical: true,
x_expand: true,
})
extension.js:477
this._resultsClip = new St.Widget({
style_class: "spotlight-results-clip",
layout_manager: new Clutter.BinLayout(),
x_expand: true,
clip_to_allocation: true,
})
extension.js:466
this._resultsScroll = new St.ScrollView({
style_class: "spotlight-results-scroll",
x_expand: true,
overlay_scrollbars: true,
})
extension.js:443
this._statusBox = new St.BoxLayout({
style_class: "spotlight-status",
vertical: true,
x_expand: true,
y_expand: true,
visible: false,
})
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.
extension.js:1507
this._clipboardPollId = GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
1200,
() => {
this._pollClipboard();
return GLib.SOURCE_CONTINUE;
},
)
extension.js:3082
this._resultsHeightTimeoutId = GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
0,
() => {
this._resultsHeightTimeoutId = null;
if (this._enabled) this._updateResultsHeight(false);
return GLib.SOURCE_REMOVE;
},
)
extension.js:1337
this._searchTimeout = GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
delay,
() => {
this._searchTimeout = null;
if (this._isCurrentQuery(text, generation)) callback();
return GLib.SOURCE_REMOVE;
},
)
extension.js:3026
this._selectionScrollTimeoutId = GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
0,
() => {
this._selectionScrollTimeoutId = null;
this._scrollToSelection();
return GLib.SOURCE_REMOVE;
},
)