"""Preferences globales simples (une cle -> une valeur) dans data/settings.json : theme, taille de police, dernier workspace ouvert... Un seul fichier partage entre plusieurs modules plutot qu'un mecanisme de lecture/ecriture par module. """ from __future__ import annotations import json from app.paths import DATA_DIR from app.storage.atomic_file import atomic_write_text SETTINGS_FILE = DATA_DIR / "settings.json" def _load_all() -> dict: try: return json.loads(SETTINGS_FILE.read_text(encoding="utf-8")) except (OSError, json.JSONDecodeError): return {} def get_setting(key: str, default=None): return _load_all().get(key, default) def set_setting(key: str, value) -> None: data = _load_all() data[key] = value try: atomic_write_text(SETTINGS_FILE, json.dumps(data, indent=2)) except OSError: pass