aboutsummaryrefslogtreecommitdiffstats
path: root/hyprsunset_qt
diff options
context:
space:
mode:
Diffstat (limited to 'hyprsunset_qt')
-rw-r--r--hyprsunset_qt/config.py44
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