aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/island/StatusPill.qml
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-13 11:30:07 +0200
committerDanilo M. <danix@danix.xyz>2026-10-13 11:30:07 +0200
commit6849707c43bb8b87f9913fc26b6a69d51777d209 (patch)
treefdf165dd2da7783bf4cadd6fc78e72ef32e69dbe /desktop/island/StatusPill.qml
parent2bec673df8ebcb756ec9b605dd7942018a32fdcb (diff)
downloadquickshell-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.qml11
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 }
}
}