A live, OLED-black solar system as your wallpaper: planets in their real positions, spinning at their relative speeds, with the spacecraft of the space age replaying their gravity-assist journeys and fact cards about distances, speeds and the worlds themselves. Moons, asteroids, comets and Lagrange points, planned missions into the 2030s, ambient music, and the overview shows it too. Click anything to pin a card, scrub through history on the timeline, and switch to a sunlight view.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-C49-004 error
extensions targeting GNOME 49 must not call Meta.Window.get_maximized
This extension explicitly targets GNOME Shell 49 but still calls removed `Meta.Window.get_maximized()`.
extension.js:2807
w.get_maximized()
EGO-A-001 manual_review
extension code must not be minified or obfuscated
File appears obfuscated: 55% of identifiers are 1–2 characters (avg length 3.2).
lib/focus.js
short identifier ratio: 55%, identifiers scored: 745
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:121
this.area = new St.DrawingArea({visible: false})
extension.js:1027
this._backButton = new St.Button({style_class: 'orrery-pill orrery-back', label: '‹ Back to the solar system',
can_focus: false, visible: false})
extension.js:204
this._backdrop = new St.DrawingArea()
extension.js:199
this._content = new Clutter.Actor()
extension.js:217
this._craftLayer = new Clutter.Actor()
extension.js:960
this._dateBox = new St.BoxLayout({style_class: 'orrery-datebox', orientation: Clutter.Orientation.VERTICAL})
extension.js:221
this._focusLayer = new Clutter.Actor()
extension.js:223
this._hud = new Clutter.Actor()
extension.js:218
this._labels = new Clutter.Actor()
extension.js:971
this._legend = new St.BoxLayout({style_class: 'orrery-legend', orientation: Clutter.Orientation.VERTICAL, visible: false})
extension.js:974
this._legendBar = new St.DrawingArea({width: 200, height: 9})
extension.js:216
this._markerLayer = new Clutter.Actor()
extension.js:965
this._missionBox = new St.BoxLayout({style_class: 'orrery-missions', orientation: Clutter.Orientation.VERTICAL})
extension.js:214
this._smallLayer = new Clutter.Actor()
extension.js:208
this._sunLayer = new Clutter.Actor()
extension.js:202
this._system = new Clutter.Actor()
extension.js:215
this._world = new Clutter.Actor()
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`.
extension.js:93
this.area = new St.DrawingArea({width: size, height: size})
extension.js:121
this.area = new St.DrawingArea({visible: false})
extension.js:1027
this._backButton = new St.Button({style_class: 'orrery-pill orrery-back', label: '‹ Back to the solar system',
can_focus: false, visible: false})
extension.js:204
this._backdrop = new St.DrawingArea()
extension.js:199
this._content = new Clutter.Actor()
extension.js:217
this._craftLayer = new Clutter.Actor()
extension.js:960
this._dateBox = new St.BoxLayout({style_class: 'orrery-datebox', orientation: Clutter.Orientation.VERTICAL})
extension.js:221
this._focusLayer = new Clutter.Actor()
extension.js:223
this._hud = new Clutter.Actor()
extension.js:218
this._labels = new Clutter.Actor()
extension.js:971
this._legend = new St.BoxLayout({style_class: 'orrery-legend', orientation: Clutter.Orientation.VERTICAL, visible: false})
extension.js:974
this._legendBar = new St.DrawingArea({width: 200, height: 9})
extension.js:216
this._markerLayer = new Clutter.Actor()
extension.js:965
this._missionBox = new St.BoxLayout({style_class: 'orrery-missions', orientation: Clutter.Orientation.VERTICAL})
extension.js:214
this._smallLayer = new Clutter.Actor()
extension.js:208
this._sunLayer = new Clutter.Actor()
extension.js:202
this._system = new Clutter.Actor()
extension.js:215
this._world = new Clutter.Actor()
extension.js:198
this.actor = new St.Widget({style_class: 'orrery', reactive: false, clip_to_allocation: true})
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:94
this.area.connect('repaint', area => {
const cr = area.get_context();
paint(cr, size);
cr.$dispose();
})
extension.js:124
this.area.connect('repaint', area => {
const cr = area.get_context();
cr.translate(-this._origin[0], -this._origin[1]);
this._paint?.(cr);
cr.$dispose();
})
extension.js:1029
this._backButton.connect('clicked', () => {
if (this._focus)
this._leaveFocus();
else
this._zoomTarget = 0;
this._syncTimelineState();
})
extension.js:205
this._backdrop.connect('repaint', area => this._paintBackdrop(area))
extension.js:975
this._legendBar.connect('repaint', area => {
const cr = area.get_context();
R.drawSunlightLegend(cr, ...area.get_surface_size(), marks);
cr.$dispose();
})
extension.js:1010
this._timeline.actor.connect('enter-event', () => {
this._setHover(null);
return Clutter.EVENT_PROPAGATE;
})
extension.js:2203
this.actor.connect('button-press-event', (_a, event) => {
if (!own(event))
return Clutter.EVENT_PROPAGATE;
this._press = event.get_coords();
if (event.get_button() === Clutter.BUTTON_SECONDARY)
this._openBackgroundMenu(...th
extension.js:2211
this.actor.connect('button-release-event', (_a, event) => {
if (!own(event))
return Clutter.EVENT_PROPAGATE;
const [sx, sy] = event.get_coords();
if (event.get_button() !== Clutter.BUTTON_PRIMARY || !this._press ||
Math.hypo
extension.js:2197
this.actor.connect('leave-event', () => {
this._setHover(null);
return Clutter.EVENT_PROPAGATE;
})
extension.js:2188
this.actor.connect('motion-event', (_a, event) => {
const [sx, sy] = event.get_coords();
const [, x, y] = this.actor.transform_stage_point(sx, sy);
this._activity();
// Over a card or the timeline, nothing in the scene is hovered.
c
extension.js:2238
this.actor.connect('scroll-event', (_a, event) => {
if (!own(event) || !this._interactive())
return Clutter.EVENT_PROPAGATE;
const dir = event.get_scroll_direction();
let steps = 0;
if (dir === Clutter.ScrollDirection.UP)
extension.js:1246
row.box.connect('clicked', () => this._select({tr}, {toggle: true}))
extension.js:1247
row.box.connect('notify::hover', () => this._setHover(row.box.hover ? {tr} : null, {fromList: 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.
extension.js:2611
this._raiseId = GLib.idle_add(GLib.PRIORITY_LOW, () => {
this._raiseId = 0;
if (this._scene)
Main.layoutManager._backgroundGroup.set_child_above_sibling(this._scene.actor, null);
return GLib.SOURCE_REMOVE;
})
extension.js:2677
this._recheckId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
this._recheckId = 0;
if (this._check())
this._schedule();
return GLib.SOURCE_REMOVE;
})
extension.js:2623
this._relayoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 120, () => {
this._relayoutId = 0;
this._relayout();
return GLib.SOURCE_REMOVE;
})
EGO-L-006 warning
preferences classes should not retain window-scoped objects on instance fields without close-request cleanup
Preferences code stores window-scoped objects on the exported prefs class without `close-request` cleanup.
prefs.js:12
this._settings = this.getSettings()
| Version | Status |
|---|---|
| 1.3.2 (3) | Unreviewed |
| 1.3.1 (2) | Rejected |
| 1.3.0 (1) | Rejected |