254 lines · 8.1 KB
import Quickshell
import Quickshell.Wayland
import Quickshell.Io
import Quickshell.Hyprland
import QtQuick
import QtQuick.Layouts

PanelWindow {
    id: root

    // Theme - CharmTone palette
    property color colBg: "transparent"
    property color colFg: "#D6D3DC"
    property color colMuted: "#605F6B"
    property color colCyan: "#A2A0AD"
    property color colBlue: "#BFBCC8"
    property color colYellow: "#BFBCC8"
    property color colCharple: "#6B50FF"
    property string fontFamily: "JetBrains Mono"
    property int fontSize: 14

    // System data
    property int cpuUsage: 0
    property int memUsage: 0
    property var lastCpuIdle: 0
    property var lastCpuTotal: 0
    property int batteryCapacity: 0
    property string batteryStatus: "Unknown"
    property int cpuTemp: 0
    property int gpuTemp: 0
    property real netRxRate: 0  // bytes/sec
    property real netTxRate: 0  // bytes/sec
    property var lastNetRx: -1
    property var lastNetTx: -1
    property var lastNetTime: 0

    function fmtRate(bps) {
        var n, unit
        if (bps < 1024)                  { n = bps.toFixed(0);            unit = "B/s" }
        else if (bps < 1024 * 1024)      { n = (bps / 1024).toFixed(0);   unit = "K/s" }