Files
dotfiles/.config/quickshell/modules/TemperatureWidget.qml
T

44 lines
1.2 KiB
QML

// TemperatureWidget.qml - CPU package temperature
import QtQuick
import Quickshell.Io
import ".."
Pill {
id: root
property int tempC: 0
property bool critical: tempC >= 80
property string icon: tempC < 50 ? "" : tempC < 70 ? "" : ""
onClicked: (m) => {
if (m.button === Qt.LeftButton) Exec.run(["xsensors"])
}
Text {
text: root.icon + " " + root.tempC + "°C"
font.family: Theme.fontSans
font.pixelSize: Theme.fontSize
color: root.critical ? Theme.color1 : Theme.foreground
}
// Read first available CPU package sensor - works regardless of hwmon number
Process {
id: tempProc
running: false
command: ["bash", "-c", "cat /sys/class/hwmon/hwmon*/temp1_input 2>/dev/null | head -1"]
stdout: SplitParser {
onRead: (line) => {
const raw = parseInt(line.trim())
if (!isNaN(raw)) root.tempC = Math.round(raw / 1000)
}
}
onExited: tempProc.running = false
}
Timer {
interval: 4000; running: true; repeat: true
triggeredOnStart: true
onTriggered: tempProc.running = true
}
}