Files
Panama/config/dot/quickshell/modules/bar/AgentUsageWidget.qml
T
Gabriel Brown 669a228286 Install the desktop before anything allowed to fail, and let Terra be installed twice
Two bugs, one story: ./install on a machine that had been half set up before
produced no Hyprland at all, and said so in one line among twenty minutes of
scrollback.

Terra bootstraps itself with --repofrompath, which defines a throwaway repo id
just long enough to install terra-release. Run it again on a machine that
already has terra-release and dnf5 refuses the whole transaction -- the
throwaway id collides with the real one. That step sits above everything, so
set -e ended the stage before a single package was considered. It is skipped
now when terra-release is already installed.

The rest is the reason one failed repo cost the desktop. Hyprland was installed
near the bottom of the stage, below a codec swap, two group updates and a
GStreamer glob, any one of which can fail for reasons outside this repository.
It now installs directly after the packages it needs and before anything
optional, and everything fragile below it runs through a soft helper that logs
and continues rather than ending the run. What was stepped over is listed at
the end, because tolerating a failure only beats aborting on it if somebody is
told.

A missing Hyprland is still fatal, and now says so in words.

Also removes the leftover disabled solopasha/hyprland COPR, which would mix
with lionheartp's the moment anyone enabled it while debugging.

Fixes the usage widget reading 1500%: the endpoint reports percentages, not
0..1 fractions. Clamped as well, and the widget answers a click now -- it set
interactive:false, which disables the mouse area its own handler needed.
2026-08-22 09:36:54 -04:00

62 lines
2.2 KiB
QML

// How much of the Claude subscription is gone, beside the other vitals.
//
// One number: whichever window is closer to its limit, because that is the one
// about to interrupt you.
//
// Hidden unless asked for AND the collector has real numbers. A bar indicator
// reading "unknown" is worse than an empty space, and this is off by default:
// it is a coding-tool readout, not something a general-purpose desktop shows
// without being asked.
//
// The glyph and the number live in their own Row, the same shape VitalsField
// uses. Anchoring them straight into Pill's layout Row instead made each child
// centre against a Row whose height those same children determine, and they
// came out sitting off-centre against the rest of the bar.
//
// Clickable, because a readout you cannot ask anything of is furniture. Left
// click opens the settings that govern it; hovering says which window the
// number belongs to and when it resets.
import QtQuick
import qs.config
import qs.services
import qs.widgets
Pill {
id: root
visible: Settings.showAgentUsage && AgentUsage.available
onActivated: ShellState.openSettings("appearance")
onSecondaryActivated: ShellState.openSettings("appearance")
Row {
spacing: 4
Text {
anchors.verticalCenter: parent.verticalCenter
text: "\u{F1719}" // md-robot-outline
color: {
if (AgentUsage.headline >= 90) return Theme.danger;
if (AgentUsage.headline >= 75) return Theme.warn;
return Theme.fgDim;
}
font.family: Theme.fontMono
font.pixelSize: Theme.fontSize
}
Text {
anchors.verticalCenter: parent.verticalCenter
text: AgentUsage.headline + "%"
color: Theme.fg
font.family: Theme.fontFamily
font.pixelSize: Theme.fontSizeSmall
font.features: Theme.tabularFigures
// Fixed and right-aligned so the bar does not shuffle sideways when
// the number gains a digit, exactly as VitalsField does.
horizontalAlignment: Text.AlignRight
width: 30
}
}
}