diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-13 11:30:07 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-13 11:30:07 +0200 |
| commit | 6849707c43bb8b87f9913fc26b6a69d51777d209 (patch) | |
| tree | fdf165dd2da7783bf4cadd6fc78e72ef32e69dbe /desktop/island/StatusPill.qml | |
| parent | 2bec673df8ebcb756ec9b605dd7942018a32fdcb (diff) | |
| download | quickshell-6849707c43bb8b87f9913fc26b6a69d51777d209.tar.gz quickshell-6849707c43bb8b87f9913fc26b6a69d51777d209.zip | |
fix(perf): review findings in the service and the panel
- The panel loads only while open. Its models are fresh arrays every
sample, so a hidden instance rebuilt its rows every 2s for the whole
session.
- The public IP fetch never kills one already running, and waits 30
minutes from the last attempt, not the last success: a rate-limited
or offline fetch was retried every minute.
- curl -4, so an IPv6 answer cannot silently stall the VPN check.
- CPU load sums only the first eight /proc/stat fields. guest and
guest_nice are already inside user and nice, and counting them again
read high while VMs ran.
- df gets timeout -k; the VRAM scan is not restarted over itself.
- The GPU name joins the host constants in Perf.qml.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/island/StatusPill.qml')
| -rw-r--r-- | desktop/island/StatusPill.qml | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/desktop/island/StatusPill.qml b/desktop/island/StatusPill.qml index dd97855..d62b87f 100644 --- a/desktop/island/StatusPill.qml +++ b/desktop/island/StatusPill.qml @@ -42,7 +42,7 @@ Capsule { restWidth: restRow.implicitWidth + 24 panelWidth: panel === "perf" ? 600 : 320 panelHeight: (panel === "controls" ? controlsPanel.implicitHeight - : panel === "perf" ? perfPanel.implicitHeight + : panel === "perf" ? (perfPanel.item ? perfPanel.item.implicitHeight : 0) : soundPanel.implicitHeight) + 28 // The detailed sampling (per-core, network, VRAM) runs only while the @@ -191,13 +191,14 @@ Capsule { onOpenDrawer: page => pill.openPage(page) } - PerfPanel { + // Loaded only while open: its models are fresh arrays every sample, and + // a hidden instance would rebuild its rows every 2s for the whole session. + Loader { id: perfPanel x: 14 y: 14 width: 600 - 28 - opacity: pill.panel === "perf" ? 1 : 0 - visible: opacity > 0 - Behavior on opacity { NumberAnimation { duration: 160 } } + active: pill.panel === "perf" + sourceComponent: PerfPanel { width: 600 - 28 } } } |
