46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
import os
|
|
from ignis.options_manager import OptionsGroup, OptionsManager
|
|
from ignis import DATA_DIR, CACHE_DIR # type: ignore
|
|
|
|
USER_OPTIONS_FILE = f"{DATA_DIR}/user_options.json"
|
|
OLD_USER_OPTIONS_FILE = f"{CACHE_DIR}/user_options.json"
|
|
|
|
|
|
# FIXME: remove someday
|
|
def _migrate_old_options_file() -> None:
|
|
with open(OLD_USER_OPTIONS_FILE) as f:
|
|
data = f.read()
|
|
|
|
with open(USER_OPTIONS_FILE, "w") as f:
|
|
f.write(data)
|
|
|
|
|
|
class UserOptions(OptionsManager):
|
|
def __init__(self):
|
|
if not os.path.exists(USER_OPTIONS_FILE) and os.path.exists(
|
|
OLD_USER_OPTIONS_FILE
|
|
):
|
|
_migrate_old_options_file()
|
|
|
|
try:
|
|
super().__init__(file=USER_OPTIONS_FILE)
|
|
except FileNotFoundError:
|
|
pass
|
|
|
|
class User(OptionsGroup):
|
|
avatar: str = f"/var/lib/AccountsService/icons/{os.getenv('USER')}"
|
|
|
|
class Settings(OptionsGroup):
|
|
last_page: int = 0
|
|
|
|
class Material(OptionsGroup):
|
|
dark_mode: bool = True
|
|
colors: dict[str, str] = {}
|
|
|
|
user = User()
|
|
settings = Settings()
|
|
material = Material()
|
|
|
|
|
|
user_options = UserOptions()
|