nova-shell/modules/PowerProfile.qml
2026-04-12 00:56:17 +02:00

48 lines
1.2 KiB
QML

import QtQuick
import Quickshell.Io
import "." as M
M.BarIcon {
id: root
tooltip: "Power profile: " + (root.profile || "unknown")
property string profile: ""
icon: {
if (root.profile === "performance") return "\uF0E7";
if (root.profile === "power-saver") return "\uF06C";
if (root.profile === "balanced") return "\uF24E";
return "\uF0E7";
}
Process {
id: proc
running: true
command: ["powerprofilesctl", "get"]
stdout: StdioCollector {
onStreamFinished: root.profile = text.trim()
}
}
Timer {
interval: 5000
running: true
repeat: true
onTriggered: proc.running = true
}
Process {
id: setter
property string next: ""
command: ["powerprofilesctl", "set", next]
onRunningChanged: if (!running && next !== "") proc.running = true
}
TapHandler {
onTapped: {
const cycle = ["performance", "balanced", "power-saver"];
const idx = cycle.indexOf(root.profile);
setter.next = cycle[(idx + 1) % cycle.length];
setter.running = true;
}
}
}