50 lines
1.2 KiB
QML
50 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
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: {
|
|
const cycle = ["performance", "balanced", "power-saver"];
|
|
const idx = cycle.indexOf(root.profile);
|
|
setter.next = cycle[(idx + 1) % cycle.length];
|
|
setter.running = true;
|
|
}
|
|
}
|
|
}
|