From 45197a34a43c1f5f84f3e9b2e5e890412dabfcff Mon Sep 17 00:00:00 2001 From: Supertiger Date: Sat, 2 Aug 2025 10:44:18 +0100 Subject: [PATCH] Enhance Label module regex for better format handling and add CPU and Memory modules with dynamic updates --- src/routes/waybar/Label.ts | 6 +++--- src/routes/waybar/modules.ts | 6 ++++++ src/routes/waybar/modules/battery.ts | 2 +- src/routes/waybar/modules/cpu.ts | 27 +++++++++++++++++++++++++++ src/routes/waybar/modules/memory.ts | 27 +++++++++++++++++++++++++++ 5 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 src/routes/waybar/modules/cpu.ts create mode 100644 src/routes/waybar/modules/memory.ts diff --git a/src/routes/waybar/Label.ts b/src/routes/waybar/Label.ts index d9d6842..6e19f46 100644 --- a/src/routes/waybar/Label.ts +++ b/src/routes/waybar/Label.ts @@ -41,10 +41,10 @@ export const createLabel = (opts: LabelOpts) => { return "N/A"; } - const regex = /\{(\w+)\}|{:(.*?)}/g; + const regex = /\{(\w+)?\}|{:(.*?)}/g; const result = format.replace(regex, (match, key, dateFmt) => { - if (key !== undefined) { - return data[key] !== undefined ? data[key] : match; + if (match === "{}" || key !== undefined) { + return data[key || ""] !== undefined ? data[key || ""] : match; } if (dateFmt !== undefined) { diff --git a/src/routes/waybar/modules.ts b/src/routes/waybar/modules.ts index 1b8c64b..24e6b07 100644 --- a/src/routes/waybar/modules.ts +++ b/src/routes/waybar/modules.ts @@ -14,4 +14,10 @@ export const modules = { import("./modules/temperature").then( ({ createTemperatureModule }) => createTemperatureModule ), + cpu: () => + import("./modules/cpu").then(({ createCpuModule }) => createCpuModule), + memory: () => + import("./modules/memory").then( + ({ createMemoryModule }) => createMemoryModule + ), }; diff --git a/src/routes/waybar/modules/battery.ts b/src/routes/waybar/modules/battery.ts index be08f01..6db8664 100644 --- a/src/routes/waybar/modules/battery.ts +++ b/src/routes/waybar/modules/battery.ts @@ -9,7 +9,7 @@ export const createBatteryModule = ( config: WaybarConfig["battery"] ) => { const label = createLabel({ - interval: 1000, + interval: 2000, update: () => update(), config: config!, module, diff --git a/src/routes/waybar/modules/cpu.ts b/src/routes/waybar/modules/cpu.ts new file mode 100644 index 0000000..e9f6493 --- /dev/null +++ b/src/routes/waybar/modules/cpu.ts @@ -0,0 +1,27 @@ +import type { WaybarConfig } from "../configParser"; +import type { Module } from "../createModule"; +import { createLabel } from "../Label"; + +export const createCpuModule = ( + module: Module, + config: WaybarConfig["cpu"] +) => { + const label = createLabel({ + interval: 1000, + update: () => update(), + config: config!, + module, + }); + + module.element.appendChild(label.element); + + const update = async () => { + const usage = Math.round(Math.random() * 100); + + label.set({ + usage, + }); + }; + + update(); +}; diff --git a/src/routes/waybar/modules/memory.ts b/src/routes/waybar/modules/memory.ts new file mode 100644 index 0000000..c201aac --- /dev/null +++ b/src/routes/waybar/modules/memory.ts @@ -0,0 +1,27 @@ +import type { WaybarConfig } from "../configParser"; +import type { Module } from "../createModule"; +import { createLabel } from "../Label"; + +export const createMemoryModule = ( + module: Module, + config: WaybarConfig["memory"] +) => { + const label = createLabel({ + interval: 1000, + update: () => update(), + config: config!, + module, + }); + + module.element.appendChild(label.element); + + const update = async () => { + const usage = Math.round(Math.random() * 100); + + label.set({ + "": usage, + }); + }; + + update(); +};