From 51b725e1f7118902c75799f99f7dd27c41e2a58f Mon Sep 17 00:00:00 2001 From: Tetardtek Date: Thu, 26 Mar 2026 09:13:36 +0100 Subject: [PATCH] =?UTF-8?q?fix(ags-v3):=20nice-to-have=20=E2=80=94=20porta?= =?UTF-8?q?bilit=C3=A9,=20perf,=20r=C3=A9activit=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Prompt.tsx: GLib.get_user_name() au lieu de hardcode "tetardtek" - ghost-shell.desktop: $HOME au lieu de chemin absolu - SystemStats.tsx: lecture /proc/stat + /proc/meminfo (zero fork, économie batterie) - Battery.tsx: createDerivedBinding percentage+charging — réactif sur branchement --- ags-v3/widget/modules/Battery.tsx | 49 ++++++++++++++----------- ags-v3/widget/modules/Prompt.tsx | 5 ++- ags-v3/widget/modules/SystemStats.tsx | 51 +++++++++++++++++++++------ autostart/ghost-shell.desktop | 2 +- 4 files changed, 74 insertions(+), 33 deletions(-) diff --git a/ags-v3/widget/modules/Battery.tsx b/ags-v3/widget/modules/Battery.tsx index c874541..1654564 100644 --- a/ags-v3/widget/modules/Battery.tsx +++ b/ags-v3/widget/modules/Battery.tsx @@ -1,29 +1,38 @@ import AstalBattery from "gi://AstalBattery" -import { createBinding } from "ags" +import { createBinding, createDerivedBinding } from "ags" export default function Battery() { const bat = AstalBattery.get_default() - const text = createBinding(bat, "percentage")((p: number) => { - const pct = Math.round(p * 100) - let icon = "" - if (bat.charging) icon = "󰂄" - else if (pct > 90) icon = "󰁹" - else if (pct > 70) icon = "󰂁" - else if (pct > 50) icon = "󰁿" - else if (pct > 30) icon = "󰁽" - else if (pct > 10) icon = "󰁻" - else icon = "󰂃" - return `${icon} ${pct}%` - }) + const percentage = createBinding(bat, "percentage") + const charging = createBinding(bat, "charging") - const cls = createBinding(bat, "percentage")((p: number) => { - const pct = Math.round(p * 100) - if (bat.charging) return "battery charging" - if (pct <= 10) return "battery low" - if (pct <= 20) return "battery warning" - return "battery" - }) + const text = createDerivedBinding( + [percentage, charging], + (p: number, isCharging: boolean) => { + const pct = Math.round(p * 100) + let icon = "" + if (isCharging) icon = "󰂄" + else if (pct > 90) icon = "󰁹" + else if (pct > 70) icon = "󰂁" + else if (pct > 50) icon = "󰁿" + else if (pct > 30) icon = "󰁽" + else if (pct > 10) icon = "󰁻" + else icon = "󰂃" + return `${icon} ${pct}%` + }, + ) + + const cls = createDerivedBinding( + [percentage, charging], + (p: number, isCharging: boolean) => { + const pct = Math.round(p * 100) + if (isCharging) return "battery charging" + if (pct <= 10) return "battery low" + if (pct <= 20) return "battery warning" + return "battery" + }, + ) return