noctalia-shell/Modules/SidePanel/SystemCard.qml

40 lines
1.6 KiB
QML

import QtQuick
import QtQuick.Layouts
import qs.Services
import qs.Widgets
// Unified system card: monitors CPU, temp, memory, disk
NBox {
id: root
readonly property real scaling: Scaling.scale(screen)
Layout.preferredWidth: 84 * scaling
implicitHeight: content.implicitHeight + Style.marginTiny * 2 * scaling
Column {
id: content
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.leftMargin: Style.marginSmall * scaling
anchors.rightMargin: Style.marginSmall * scaling
anchors.topMargin: Style.marginTiny * scaling
anchors.bottomMargin: Style.marginMedium * scaling
spacing: Style.marginSmall * scaling
// Slight top padding
Item { height: Style.marginTiny * scaling }
NSystemMonitor { id: sysMon; intervalSeconds: 1 }
NCircleStat { value: sysMon.cpuUsage || SysInfo.cpuUsage; icon: "speed"; flat: true; contentScale: 0.8; width: 72 * scaling; height: 68 * scaling }
NCircleStat { value: sysMon.cpuTemp || SysInfo.cpuTemp; suffix: "°C"; icon: "device_thermostat"; flat: true; contentScale: 0.8; width: 72 * scaling; height: 68 * scaling }
NCircleStat { value: sysMon.memoryUsagePer || SysInfo.memoryUsagePer; icon: "memory"; flat: true; contentScale: 0.8; width: 72 * scaling; height: 68 * scaling }
NCircleStat { value: sysMon.diskUsage || SysInfo.diskUsage; icon: "data_usage"; flat: true; contentScale: 0.8; width: 72 * scaling; height: 68 * scaling }
// Extra bottom padding to shift the perceived stack slightly upward
Item { height: Style.marginMedium * scaling }
}
}