pragma Singleton import QtQml import Quickshell import Quickshell.Services.Pipewire Singleton { id: root PwObjectTracker { objects: Pipewire.nodes.values } enum Item { Microphone, Screensharing } readonly property list activeItems: { var items = []; if (microphoneActive) items.push(Privacy.Item.Microphone); if (screensharingActive) items.push(Privacy.Item.Screensharing); return items; } readonly property bool microphoneActive: { if (!Pipewire.ready || !Pipewire.nodes?.values) { return false } for (const node of Pipewire.nodes.values) { if (!node || (node.type & PwNodeType.AudioInStream) != PwNodeType.AudioInStream) continue; if (node.properties?.["stream.monitor"] === "true") continue; if (node.audio?.muted) continue; return true; } return false; } readonly property bool screensharingActive: { if (!Pipewire.ready || !Pipewire.nodes?.values) { return false } for (const node of Pipewire.nodes.values) { if (!node || (node.type & PwNodeType.VideoInStream) != PwNodeType.VideoInStream) continue; return true; } return false; } }