pragma ComponentBehavior: Bound import Quickshell import Quickshell.Hyprland import Quickshell.Services.Pipewire import Quickshell.Services.SystemTray import QtQuick import qs.widgets.vitals // Production/layer-shell adapter. All visual composition lives in the // Item-rooted DenseBarContent so the exact bar can be rendered headlessly. Scope { id: root readonly property PwNode sink: Pipewire.defaultAudioSink readonly property real volume: sink?.audio?.volume ?? 0 readonly property bool muted: sink?.audio?.muted ?? false readonly property var workspaceIds: Hyprland.workspaces.values .filter(workspace => workspace.id > 0) .map(workspace => workspace.id) readonly property int activeWorkspaceId: Hyprland.focusedWorkspace?.id ?? 1 readonly property var rootDisk: vitals.disks.length > 0 ? vitals.disks[0] : null PwObjectTracker { objects: [root.sink] } VitalsData { id: vitals active: true } Variants { model: Quickshell.screens PanelWindow { id: window required property var modelData screen: modelData color: "transparent" implicitHeight: 164 anchors { top: true left: true right: true } DenseBarContent { anchors.fill: parent hostName: vitals.host || "LOCAL" telemetryReady: vitals.ready && !vitals.failed ratesReady: vitals.ratesReady && !vitals.failed cpuFraction: vitals.cpu cpuThreads: vitals.cpuThreads memoryFraction: vitals.memTotal > 0 ? vitals.memUsed / vitals.memTotal : 0 memoryUsedText: vitals.fmtBytes(vitals.memUsed) temperatureCelsius: vitals.cpuTemp networkInterface: vitals.netIface || "NET" networkRxText: vitals.fmtRate(vitals.netRx) networkTxText: vitals.fmtRate(vitals.netTx) storageFraction: root.rootDisk && root.rootDisk.size > 0 ? root.rootDisk.used / root.rootDisk.size : 0 storageFreeText: root.rootDisk ? vitals.fmtBytes(root.rootDisk.size - root.rootDisk.used) + " FREE" : "-- FREE" workspaceIds: root.workspaceIds.length > 0 ? root.workspaceIds : [1, 2, 3, 4] activeWorkspaceId: root.activeWorkspaceId trayCount: SystemTray.items.values.length audioFraction: Math.max(0, Math.min(1, root.volume)) audioMuted: root.muted onWorkspaceActivated: workspaceId => { const workspace = Hyprland.workspaces.values.find(item => item.id === workspaceId); if (workspace) workspace.activate(); else Hyprland.dispatch("workspace " + workspaceId); } } } } }