34 lines
1.0 KiB
TypeScript
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>
|
|
} |