// How much of the busiest agent subscription is gone, beside the other vitals. // // One number: whichever window across every collected agent is closest to its // limit, because that is the one about to interrupt you. // // Hidden unless asked for AND a 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 panel behind the number; right click opens the settings that // govern it. import QtQuick import qs.config import qs.services import qs.widgets Pill { id: root visible: Settings.showAgentUsage && AgentUsage.available onActivated: panel.visible = !panel.visible onSecondaryActivated: ShellState.openSettings("bar") 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.barFgDim; } font.family: Theme.fontMono font.pixelSize: Theme.fontSize } Text { anchors.verticalCenter: parent.verticalCenter text: AgentUsage.headline + "%" color: Theme.barFg 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 } } // Hangs off this pill the way TrayMenu hangs off a tray icon. A PopupWindow // is not an Item, so it takes no space in Pill's layout Row. AgentUsagePanel { id: panel anchorItem: root } }