diff --git a/src/routes/waybar/modules.ts b/src/routes/waybar/modules.ts index 954dd49..1b8c64b 100644 --- a/src/routes/waybar/modules.ts +++ b/src/routes/waybar/modules.ts @@ -10,4 +10,8 @@ export const modules = { import("./modules/battery").then( ({ createBatteryModule }) => createBatteryModule ), + temperature: () => + import("./modules/temperature").then( + ({ createTemperatureModule }) => createTemperatureModule + ), }; diff --git a/src/routes/waybar/modules/temperature.ts b/src/routes/waybar/modules/temperature.ts new file mode 100644 index 0000000..c5e6a14 --- /dev/null +++ b/src/routes/waybar/modules/temperature.ts @@ -0,0 +1,40 @@ +import type { WaybarConfig } from "../configParser"; +import type { Module } from "../createModule"; +import { createLabel } from "../Label"; + +export const createTemperatureModule = ( + module: Module, + config: WaybarConfig["temperature"] +) => { + const label = createLabel({ + interval: 1000, + update: () => update(), + config: config!, + module, + }); + + module.element.appendChild(label.element); + + const update = async () => { + const temperatureC = Math.round(Math.random() * 90); + const temperatureF = Math.round(temperatureC * (9 / 5) + 32); + + const criticalThreshold = config["critical-threshold"]; + + if (temperatureC >= criticalThreshold) { + module.element.classList.add("critical"); + } else { + module.element.classList.remove("critical"); + } + + const maxTemp = criticalThreshold !== undefined ? criticalThreshold : 0; + + label.set({ + temperatureC, + temperatureF, + icon: label.getIcon(temperatureC, "", maxTemp), + }); + }; + + update(); +};