A minimal, good-looking way to manage snapper snapshots, from the top bar. See every snapshot, take one, delete what you don't want. Open a snapshot to see what changed in it, put single files back, or roll the whole system over to it. Preferences hold the rest of snapper: retention limits, timers, btrfs maintenance and disk use. Anything that needs root names the command it runs and asks polkit. Needs snapper and a filesystem it manages. GNOME 46 and later.
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:374
St.Clipboard.get_default()
lib/compare.js:320
St.Clipboard.get_default()
lib/keys.js:89
St.Clipboard.get_default()
lib/keys.js:96
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()`.
lib/authorization.js:128
GLib.file_get_contents('/proc/self/stat')
lib/details.js:51
Gio.File.new_for_path('/etc/fstab').load_contents(null)
EGO-X-006 warning
extensions should not use lookupByURL or lookupByUUID for current extension access
Use `this`, `this.getSettings()` or `this.path` instead of `lookupByURL()` or `lookupByUUID()` for the current extension.
lib/icon.js:20
Extension.lookupByURL(import.meta.url)
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:419
this._clickGesture?.connect('recognize', gesture =>
this._clicked(gesture.get_button?.() ?? Clutter.BUTTON_PRIMARY))
extension.js:442
this.menu.connect('open-state-changed', (_menu, open) => {
if (open) {
this._rebuild();
} else {
this._shown.clear();
this._lock.relock();
}
})
extension.js:640
row.connect('key-focus-in', () => {
if (row.hover)
return;
ensureActorVisibleInScrollView(scroll, row);
})
lib/compare.js:157
actor.connect('key-focus-in', reveal)
lib/compare.js:158
actor.connect('key-focus-out', reveal)
lib/dialog.js:160
this._aside.connect('destroy', () => (this._aside = null))
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:167
this._freshId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT,
Math.ceil(FRESH - age), () => {
this._freshId = 0;
this.remove_style_class_name('wisp-fresh');
return GLib.SOURCE_REMOVE;
})
lib/dialog.js:215
this._pending = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
this._pending = 0;
this._measure();
return GLib.SOURCE_REMOVE;
})
lib/dialog.js:162
this._ticking = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 1,
() => {
this._say();
return GLib.SOURCE_CONTINUE;
})
| Version | Status |
|---|---|
| 1.0.4 (2) | Unreviewed |
| 1.0.3 (1) | Rejected |