From 85bdcf48d91fedf32d09c64707c1e206e4347e54 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Fri, 17 Jul 2026 09:53:24 +0200 Subject: feat: serialize profiles with day/night tagging Co-Authored-By: Claude Opus 4.8 --- hyprsunset_qt/config.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'hyprsunset_qt') diff --git a/hyprsunset_qt/config.py b/hyprsunset_qt/config.py index c2ef010..f8ad5cf 100644 --- a/hyprsunset_qt/config.py +++ b/hyprsunset_qt/config.py @@ -38,3 +38,47 @@ def parse_config(text: str) -> list[Profile]: ) ) return profiles + + +_HEADER = "# Managed by hyprsunset-qt. Edits here are overwritten on save.\n" + + +def _fmt_gamma(g: float) -> str: + return f"{g:g}" + + +def serialize(profiles: list[Profile]) -> str: + day = day_index(profiles) + night = night_index(profiles) + parts = [_HEADER] + for i, p in enumerate(profiles): + if i == day: + parts.append("\n# day profile -- sunrise") + elif i == night: + parts.append("\n# night profile -- sunset") + else: + parts.append("\n# profile") + lines = ["profile {", f" time = {p.time}"] + if p.identity: + lines.append(" identity = true") + if p.temperature is not None: + lines.append(f" temperature = {p.temperature}") + if p.gamma is not None: + lines.append(f" gamma = {_fmt_gamma(p.gamma)}") + lines.append("}") + parts.append("\n".join(lines)) + return "\n".join(parts) + "\n" + + +def day_index(profiles: list[Profile]) -> int | None: + for i, p in enumerate(profiles): + if p.identity: + return i + return None + + +def night_index(profiles: list[Profile]) -> int | None: + for i, p in enumerate(profiles): + if p.temperature is not None: + return i + return None -- cgit v1.2.3