diff --git a/modules/IdleInhibitor.qml b/modules/IdleInhibitor.qml index e34b380..5a60515 100644 --- a/modules/IdleInhibitor.qml +++ b/modules/IdleInhibitor.qml @@ -1,23 +1,47 @@ 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: "Idle inhibition: " + (root.active ? "active" : "inactive") + 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" - // The inhibitor process — stays running while active 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