Skip to content

Feature Request: Compact CPU and RAM indicators in the top panel #142

Description

@deluca0206

Summary

Add an opt-in System Monitor module that shows compact CPU and RAM usage in the GNOME top panel, similar to Vitals-style text:

CPU 23% RAM 8.1G

Clicking the indicator opens a details menu (overall CPU %, used/total RAM, and swap when available). GPU usage and temperatures are out of scope for the first version; they should be follow-up work only if they can be read from sysfs without spawning processes.

The module must follow Aurora’s module contract: Shell-free manifest, factory in registry.ts, GSettings keys, reversible enable()/disable(), and rows in the module reference / README.

Motivation

Vanilla GNOME has no always-visible CPU/RAM readout. Users currently stack a second extension (Vitals, system-monitor) next to Aurora. Aurora already owns panel status items (lock-key-indicators, weather clock, tray icons). A first-party, opt-in indicator would cover that everyday gap without another extension.

Proposed UX

  • Placement: Main.panel.addToStatusArea(..., 'right'), same family as lock-key-indicators.
  • Compact labels, not emoji. No fake “loading…” ASCII meters; use St.Label / BarLevel if a meter is needed in the menu.
  • Polling: GLib.timeout_add_seconds, default 2s, user-configurable (e.g. 1–10). Remove the source in disable().
  • Missing data: hide that metric; do not invent values.

Data sources (v1, no subprocess)

Metric Source Notes
CPU % /proc/stat Delta of cpu aggregate between polls
RAM /proc/meminfo Prefer MemAvailable; show used and total

Read with Gio.File + cancellable, not cat/free/top. Parse in Shell-free TypeScript so Node unit tests can cover it.

Prefs (suggested)

  • Master switch module-system-monitor — off
  • Show CPU / show RAM (switches)
  • Refresh interval (spin)
  • RAM format: 8.1G vs 45% (select)

Alternatives considered

  • Rely on Vitals / system-monitor — works, but fights Aurora’s “one extension” goal and can clash on the panel.
  • Ship GPU + temperature in v1 — NVIDIA often needs nvidia-smi; Aurora/EGO strongly discourage subprocesses in the Shell process. CPU and RAM can be read from /proc/stat and /proc/meminfo via Gio.File.
  • Enable by default — docs say new modules are opt-in unless product explicitly wants them on.
  • Graphs or icon-only — denser UI, more CSS/a11y work; compact text is enough for v1.

Follow-up (not this issue)

  • GPU from sysfs only (/sys/class/drm/.../gpu_busy_percent, Intel equivalents). Hide if absent. No nvidia-smi.
  • Temperature from /sys/class/hwmon / /sys/class/thermal. Hide if absent.

Implementation sketch

  • src/panel/systemMonitor/ — systemMonitor.manifest.ts, parser, module, SCSS
  • Catalog section dock-panel; register in moduleCatalog.ts + registry.ts
  • Schema keys in data/schemas/org.gnome.shell.extensions.aurora-shell.gschema.xml
  • Unit tests for /proc parsing; Shell test for panel actor + teardown
  • Docs: docs/module-reference.md, README module list, .po after just i18n update

Acceptance

  • Disabled by default; no panel widget until enabled
  • With the module on: CPU …% and RAM … update on the interval
  • Details menu opens on click
  • Disable removes the button and the timeout
  • just validate, unit tests, targeted Shell test, just shexli pass
  • No subprocess, no GTop/lib dependency, no telemetry

EGO / Aurora constraints

  • No work at import/construct time; poll only after enable()
  • No GTK in Shell; no emoji icons
  • Do not claim GPU/temp until those sources exist

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions