diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-06-17 14:03:51 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-06-17 14:03:51 +1000 |
| commit | 1ab61223c6acd30dac8151f01b9a5fde5f110034 (patch) | |
| tree | 85df7ad77b56c8770b3a13c1fbd2a34a5809d01e | |
| parent | wallpaper: fix print command (diff) | |
| download | caelestia-cli-1ab61223c6acd30dac8151f01b9a5fde5f110034.tar.gz caelestia-cli-1ab61223c6acd30dac8151f01b9a5fde5f110034.tar.bz2 caelestia-cli-1ab61223c6acd30dac8151f01b9a5fde5f110034.zip | |
scheme: dump scheme data when no args to list
| -rw-r--r-- | src/caelestia/subcommands/scheme.py | 32 | ||||
| -rw-r--r-- | src/caelestia/utils/scheme.py | 20 |
2 files changed, 46 insertions, 6 deletions
diff --git a/src/caelestia/subcommands/scheme.py b/src/caelestia/subcommands/scheme.py index b326e5d..24d2af3 100644 --- a/src/caelestia/subcommands/scheme.py +++ b/src/caelestia/subcommands/scheme.py @@ -1,6 +1,14 @@ +import json from argparse import Namespace -from caelestia.utils.scheme import get_scheme, get_scheme_flavours, get_scheme_modes, get_scheme_names, scheme_variants +from caelestia.utils.scheme import ( + Scheme, + get_scheme, + get_scheme_flavours, + get_scheme_modes, + get_scheme_names, + scheme_variants, +) from caelestia.utils.theme import apply_colours @@ -86,4 +94,24 @@ class List: else: print("\n".join(scheme_variants)) else: - print("No args given. Use --names, --flavours, --modes or --variants to list schemes") + current_scheme = get_scheme() + schemes = {} + for scheme in get_scheme_names(): + schemes[scheme] = {} + for flavour in get_scheme_flavours(scheme): + s = Scheme( + { + "name": scheme, + "flavour": flavour, + "mode": current_scheme.mode, + "variant": current_scheme.variant, + "colours": current_scheme.colours, + } + ) + modes = get_scheme_modes(scheme, flavour) + if s.mode not in modes: + s._mode = modes[0] + s._update_colours() + schemes[scheme][flavour] = s.colours + + print(json.dumps(schemes)) diff --git a/src/caelestia/utils/scheme.py b/src/caelestia/utils/scheme.py index 3eb5a34..ac52ea7 100644 --- a/src/caelestia/utils/scheme.py +++ b/src/caelestia/utils/scheme.py @@ -146,13 +146,13 @@ class Scheme: def _check_flavour(self) -> None: global scheme_flavours scheme_flavours = None - if self._flavour not in get_scheme_flavours(): + if self._flavour not in get_scheme_flavours(self.name): self._flavour = get_scheme_flavours()[0] def _check_mode(self) -> None: global scheme_modes scheme_modes = None - if self._mode not in get_scheme_modes(): + if self._mode not in get_scheme_modes(self.name, self.flavour): self._mode = get_scheme_modes()[0] def _update_colours(self) -> None: @@ -223,7 +223,13 @@ def get_scheme_names() -> list[str]: return scheme_names -def get_scheme_flavours() -> list[str]: +def get_scheme_flavours(name: str = None) -> list[str]: + if name is not None: + if name == "dynamic": + return ["default", "alt1", "alt2"] + else: + return [f.name for f in (scheme_data_dir / name).iterdir() if f.is_dir()] + global scheme_flavours if scheme_flavours is None: @@ -236,7 +242,13 @@ def get_scheme_flavours() -> list[str]: return scheme_flavours -def get_scheme_modes() -> list[str]: +def get_scheme_modes(name: str = None, flavour: str = None) -> list[str]: + if name is not None: + if name == "dynamic": + return ["light", "dark"] + else: + return [f.stem for f in (scheme_data_dir / name / flavour).iterdir() if f.is_file()] + global scheme_modes if scheme_modes is None: |