Files
ags/widget/modules/Cpu.tsx
T
2025-03-10 21:51:05 +07:00

34 lines
1.0 KiB
TypeScript

import { Variable } from "astal";
import GTop from "gi://GTop"
let previousCpuData = new GTop.glibtop_cpu();
GTop.glibtop_get_cpu(previousCpuData);
const computeCPU = (): string => {
const currentCpuData = new GTop.glibtop_cpu();
GTop.glibtop_get_cpu(currentCpuData);
// Calculate the differences from the previous to current data
const totalDiff = currentCpuData.total - previousCpuData.total;
const idleDiff = currentCpuData.idle - previousCpuData.idle;
const cpuUsagePercentage = totalDiff > 0 ? ((totalDiff - idleDiff) / totalDiff) * 100 : 0;
previousCpuData = currentCpuData;
const cpuUsagePercentageString = " " + Math.floor(cpuUsagePercentage) + "%";
return cpuUsagePercentageString;
}
export default function Cpu() {
const cpu_usage = Variable<string>("").poll(5000, () =>
computeCPU())
return <box className="cpu">
<label
className="Cpu"
onDestroy={() => cpu_usage.drop()}
label={cpu_usage()} />
</box>
}