diff options
| author | Danilo M. <danix@danix.xyz> | 2026-07-17 09:53:24 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-07-17 09:53:24 +0200 |
| commit | 85bdcf48d91fedf32d09c64707c1e206e4347e54 (patch) | |
| tree | a2179a4807b6155f3f88bf21e4378fdfb21004e0 /hyprsunset_qt/config.py | |
| parent | 73840b30b9943e9b7de03e6172dbe7a51582ff94 (diff) | |
| download | hyprsunset-qt-85bdcf48d91fedf32d09c64707c1e206e4347e54.tar.gz hyprsunset-qt-85bdcf48d91fedf32d09c64707c1e206e4347e54.zip | |
feat: serialize profiles with day/night tagging
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'hyprsunset_qt/config.py')
| -rw-r--r-- | hyprsunset_qt/config.py | 44 |
1 files changed, 44 insertions, 0 deletions
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 |
