import QtQuick import Quickshell import Quickshell.Io import "." as M M.BarIcon { id: root color: root.active ? (parent?.accentColor ?? M.Theme.base05) : M.Theme.base04 tooltip: { const parts = ["Idle inhibition: " + (root.active ? "active" : "inactive")]; if (root._inhibitors) parts.push(root._inhibitors); return parts.join("\n"); } property bool active: false property string _inhibitors: "" icon: root.active ? "\uF06E" : "\uF070" Process { id: inhibitor command: ["systemd-inhibit", "--what=idle", "--who=nova-shell", "--why=user", "sleep", "infinity"] running: root.active } // Poll current inhibitors Process { id: listProc running: true command: ["sh", "-c", "systemd-inhibit --list 2>/dev/null | grep -i idle | awk '{print $NF}' | sort -u | tr '\\n' ', ' | sed 's/, $//'"] stdout: StdioCollector { onStreamFinished: root._inhibitors = text.trim() ? "Blocked by: " + text.trim() : "" } } Timer { interval: 5000 running: root._hovered repeat: true triggeredOnStart: true onTriggered: listProc.running = true } MouseArea { anchors.fill: parent cursorShape: Qt.PointingHandCursor onClicked: root.active = !root.active } }