Grid-based desktop widgets and icon management for GNOME. * Desktop icons support: place, organize, and manage files and launchers on the desktop. * Desktop widgets: clock, weather, notes, music, system monitor, clipboard, and image widgets on an aligned grid. * Local clipboard history with quick access. * Drag, resize, and customise each widget independently.
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.
widgets/clipboard.js:100
St.Clipboard.get_default()
EGO-X-004 warning
extensions should avoid synchronous file IO in shell code
Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.
widgets/system/systemInfo.js:261
nameFile.load_contents(null)
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.
widgets/system/controlsSliders.js:36
this.actor = new St.DrawingArea({
reactive: true,
can_focus: true,
track_hover: true,
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
})
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`.
widgets/system/controlsSliders.js:36
this.actor = new St.DrawingArea({
reactive: true,
can_focus: true,
track_hover: true,
x_expand: true,
y_align: Clutter.ActorAlign.CENTER,
})
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.
widgets/system/controlsSliders.js:46
this.actor.connect('button-press-event', (actor, event) => {
this._handlePointer(event);
return Clutter.EVENT_STOP;
})
widgets/system/controlsSliders.js:51
this.actor.connect('motion-event', (actor, event) => {
if (event.get_state() & Clutter.ModifierType.BUTTON1_MASK) {
this._handlePointer(event);
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
})
widgets/system/controlsSliders.js:44
this.actor.connect('repaint', (area) => this._draw(area))
widgets/system/controlsSliders.js:59
this.actor.connect('scroll-event', (actor, event) => {
const dir = event.get_scroll_direction();
const step = 0.05;
if (dir === Clutter.ScrollDirection.UP) {
this.setValue(this.value + step);
} else if (dir === Clutter.ScrollDir