Desktop folder overlay widget with navigation, search, edit mode (drag/resize) and keyboard shortcuts. Completely vibe-coded with cc
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:730
St.Clipboard.get_default()
EGO-P-006 warning
unnecessary build and translation artifacts should not be shipped
Compiled GSettings schemas should not be shipped for 45+ packages.
Don't include unnecessary files
schemas/gschemas.compiled
schemas/gschemas.compiled
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:47
this._backBtn = new St.Button({
reactive: true,
can_focus: true,
track_hover: true,
visible: false,
style_class: 'desktop-folder-nav-btn',
child: new St.Icon({
icon_name: 'go-previous-symbolic',
style_class: 'desktop-folder-nav-icon',
}),
extension.js:133
this._bottomBar = new St.BoxLayout({
vertical: false,
style_class: 'desktop-folder-bottombar',
})
extension.js:300
this._collapsedItem = new PopupMenu.PopupSwitchMenuItem(
_('Auto-hide (click to expand)'),
this._settings.get_boolean(KEY_COLLAPSED)
)
extension.js:316
this._editItem = new PopupMenu.PopupSwitchMenuItem(
_('Edit mode (drag/resize)'),
this._settings.get_boolean(KEY_EDIT)
)
extension.js:60
this._homeBtn = new St.Button({
reactive: true,
can_focus: true,
track_hover: true,
visible: false,
style_class: 'desktop-folder-nav-btn',
child: new St.Icon({
icon_name: 'go-home-symbolic',
style_class: 'desktop-folder-nav-icon',
}),
extension.js:148
this._list = new St.BoxLayout({
vertical: true,
x_expand: true,
y_expand: true,
})
extension.js:79
this._openBtn = new St.Button({
reactive: true,
can_focus: true,
track_hover: true,
style_class: 'desktop-folder-open-btn',
})
extension.js:85
this._openIcon = new St.Icon({
icon_name: 'folder-open-symbolic',
style_class: 'desktop-folder-open-icon',
})
extension.js:124
this._resizeHandle = new St.Widget({
reactive: true,
can_focus: true,
track_hover: true,
width: 16,
height: 16,
style_class: 'desktop-folder-resize-handle',
})
extension.js:141
this._scrollView = new St.ScrollView({
style_class: 'desktop-folder-scrollview',
overlay_scrollbars: true,
hscrollbar_policy: St.PolicyType.NEVER,
vscrollbar_policy: St.PolicyType.AUTOMATIC,
})
extension.js:101
this._searchEntry = new St.Entry({
hint_text: _('Search…'),
can_focus: true,
track_hover: true,
style_class: 'desktop-folder-search',
})
extension.js:42
this._titleBar = new St.BoxLayout({
vertical: false,
style_class: 'desktop-folder-titlebar',
})
extension.js:73
this._titleLabel = new St.Label({
text: _('Home'),
style_class: 'desktop-folder-title',
y_align: Clutter.ActorAlign.CENTER,
})
extension.js:92
this._titleSpacer = new St.Widget({x_expand: true})
extension.js:291
this._visibleItem = new PopupMenu.PopupSwitchMenuItem(
_('Show widget'),
this._settings.get_boolean(KEY_VISIBLE)
)
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.
extension.js:778
this._menuDismissId = global.stage.connect('button-press-event', (_stage, event) => {
const [cx, cy] = event.get_coords();
const [bx, by] = menuActor.get_transformed_position();
const inside = cx >= bx && cx <= bx + menuActor.width &&
cy >= by && cy <= by +
extension.js:166
this._openBtnClickId = this._openBtn.connect('clicked', () => {
if (this._settings.get_boolean(KEY_COLLAPSED)) {
if (this._expanded)
this._collapseWidget();
else
this._expandWidget();
} else if (!this._settings.get_boolean(KEY_EDIT)) {
this
extension.js:58
this._backBtn.connect('clicked', () => this._navigateBack())
extension.js:71
this._homeBtn.connect('clicked', () => this._navigateHome())
extension.js:114
this._searchEntry.clutter_text.connect('key-press-event', (_actor, event) => {
if (event.get_key_symbol() === Clutter.KEY_Escape) {
this._searchEntry.set_text('');
global.stage.set_key_focus(null);
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAG
extension.js:108
this._searchEntry.clutter_text.connect('text-changed', () => {
const text = this._searchEntry.get_text();
this._settings.set_string('search-text', text);
this._refresh();
})
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:397
GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
this._applyVisibility(this._settings.get_boolean(KEY_VISIBLE));
return GLib.SOURCE_REMOVE;
})
| Version | Status |
|---|---|
| 2 | Unreviewed |
| 1 | Rejected |