Your computer's vital signs, one glance away: CPU, memory, battery, disk, network, temperature, power and GPU, live in the top bar and in a dropdown dashboard with charts, per-core and per-sensor readings, the busiest processes and alerts. * Usage tracking: which apps used the processor, memory, disk, graphics and battery, hour by hour, for 14 days * Diagnostics: what runs in the background, holds memory or drains the battery, with the evidence * Fix with an agent: hand the findings to a coding agent you choose; it runs in a terminal and asks before changing anything * Under 1 % of one core with the panel closed; everything stays on this computer
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
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/collectors/appio.js:65
GLib.file_get_contents(`${this._proc}/${pid}/io`)
lib/collectors/process.js:186
GLib.file_get_contents(`/proc/${pids[next]}/io`)
lib/collectors/process.js:199
GLib.file_get_contents(`/proc/${pids[next]}/stat`)
lib/collectors/process.js:352
GLib.file_get_contents(`${proc}/${pid}/stat`)
lib/engine/netusage.js:99
GLib.file_get_contents('/proc/sys/kernel/random/boot_id')
lib/engine/sessiontotals.js:23
GLib.file_get_contents('/proc/self/stat')
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:155
this._indicatorBox = new St.BoxLayout({ style_class: 'resource-pulse-indicator-box' })
extension.js:182
this._menuContainer = new St.BoxLayout({
vertical: true,
style_class: 'resource-pulse-menu-section',
accessible_name: _('Resource Pulse panel'),
reactive: true,
x_expand: true,
y_expand: true
})
extension.js:164
this._menuSection = new PopupMenu.PopupBaseMenuItem({ reactive: false, activate: false, can_focus: false })
extension.js:223
this._menuViewport = new St.BoxLayout({ vertical: true, x_expand: true, y_expand: true })
extension.js:168
this._popupStack = new St.Widget({
layout_manager: new Clutter.BinLayout(),
x_expand: true,
y_expand: true
})
extension.js:174
this._scrollView = new St.ScrollView({
style_class: 'resource-pulse-scroll-view',
hscrollbar_policy: St.PolicyType.NEVER,
vscrollbar_policy: St.PolicyType.AUTOMATIC,
x_expand: true,
y_expand: 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:323
this._clearHistoryId = this._settings.connect('changed::action-clear-history', () => {
if (!this._settings.get_boolean('action-clear-history')) return;
this._settings.set_boolean('action-clear-history', false);
if (this._tracker) {
this._tr
extension.js:318
this._flushHistoryId = this._settings.connect('changed::action-flush-history', () => {
if (!this._settings.get_boolean('action-flush-history')) return;
this._settings.set_boolean('action-flush-history', false);
this._tracker?.save();
})
extension.js:317
this._trackingId = this._settings.connect('changed::battery-tracking', () => this._syncTracking())
| Version | Status |
|---|---|
| 1 | Unreviewed |