From 85320e9ea1a8c4d41b9d7505d3e10c67335077dc Mon Sep 17 00:00:00 2001 From: zach Date: Mon, 13 Jul 2026 01:33:55 +0200 Subject: [PATCH] prevent writing battery json when there has been no change, filter out devices with unknown state --- Helpers/Battery.qml | 2 +- cli/src/zshell/subcommands/battery.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Helpers/Battery.qml b/Helpers/Battery.qml index 1f6f8d4..a154297 100644 --- a/Helpers/Battery.qml +++ b/Helpers/Battery.qml @@ -21,7 +21,7 @@ Singleton { readonly property bool ready: UPower.displayDevice.ready readonly property real timeToEmpty: UPower.displayDevice.timeToEmpty readonly property real timeToFull: UPower.displayDevice.timeToFull - readonly property list upowerDevices: UPower.devices.values + readonly property list upowerDevices: UPower.devices.values.filter(d => d.state !== UPowerDeviceState.Unknown) function getColors(percentage: real, state: string): var { if (state === "charging" || state === "full" || state === "recharging") diff --git a/cli/src/zshell/subcommands/battery.py b/cli/src/zshell/subcommands/battery.py index 60d8839..0450369 100644 --- a/cli/src/zshell/subcommands/battery.py +++ b/cli/src/zshell/subcommands/battery.py @@ -229,11 +229,15 @@ def daemon( typer.echo(f"Polling every {interval}s, writing to {out}") + last_payload = None try: while running: try: results = poll_once() - _write_json_atomic(out, results) + payload = [asdict(r) for r in results] + if payload != last_payload: + _write_json_atomic(out, results) + last_payload = payload except RuntimeError as e: typer.echo(f"error: {e}", err=True) raise typer.Exit(code=1) from None