summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-17 12:10:31 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-17 12:10:31 +1000
commit6284c74a32dc90557d0ad7ebf6811286d6e110b4 (patch)
tree8fc2cc461225d72e0739e220e590434a5879ee04
parentfeat: theme qt (diff)
downloadcaelestia-cli-6284c74a32dc90557d0ad7ebf6811286d6e110b4.tar.gz
caelestia-cli-6284c74a32dc90557d0ad7ebf6811286d6e110b4.tar.bz2
caelestia-cli-6284c74a32dc90557d0ad7ebf6811286d6e110b4.zip
scheme: add list and get subcommands
-rw-r--r--src/caelestia/data/schemes/dynamic/alt1/dark.txt81
-rw-r--r--src/caelestia/data/schemes/dynamic/alt1/light.txt81
-rw-r--r--src/caelestia/data/schemes/dynamic/alt2/dark.txt81
-rw-r--r--src/caelestia/data/schemes/dynamic/alt2/light.txt81
-rw-r--r--src/caelestia/data/schemes/dynamic/default/dark.txt81
-rw-r--r--src/caelestia/data/schemes/dynamic/default/light.txt81
-rw-r--r--src/caelestia/parser.py29
-rw-r--r--src/caelestia/subcommands/scheme.py60
8 files changed, 81 insertions, 494 deletions
diff --git a/src/caelestia/data/schemes/dynamic/alt1/dark.txt b/src/caelestia/data/schemes/dynamic/alt1/dark.txt
deleted file mode 100644
index f3c70ea..0000000
--- a/src/caelestia/data/schemes/dynamic/alt1/dark.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-primary_paletteKeyColor 5E8046
-secondary_paletteKeyColor 6E7B62
-tertiary_paletteKeyColor 517F7E
-neutral_paletteKeyColor 75786F
-neutral_variant_paletteKeyColor 74796D
-background 11140E
-onBackground E1E4D9
-surface 11140E
-surfaceDim 11140E
-surfaceBright 373A33
-surfaceContainerLowest 0C0F09
-surfaceContainerLow 191D16
-surfaceContainer 1D211A
-surfaceContainerHigh 282B24
-surfaceContainerHighest 33362F
-onSurface E1E4D9
-surfaceVariant 44483E
-onSurfaceVariant C4C8BB
-inverseSurface E1E4D9
-inverseOnSurface 2E312A
-outline 8E9286
-outlineVariant 44483E
-shadow 000000
-scrim 000000
-surfaceTint ACD28F
-primary ACD28F
-onPrimary 1A3705
-primaryContainer 304F1A
-onPrimaryContainer C7EEA9
-inversePrimary 476730
-secondary BDCBAF
-onSecondary 283420
-secondaryContainer 414D37
-onSecondaryContainer D9E7CA
-tertiary A0CFCE
-onTertiary 003737
-tertiaryContainer 6B9998
-onTertiaryContainer 000000
-error FFB4AB
-onError 690005
-errorContainer 93000A
-onErrorContainer FFDAD6
-primaryFixed C7EEA9
-primaryFixedDim ACD28F
-onPrimaryFixed 0A2000
-onPrimaryFixedVariant 304F1A
-secondaryFixed D9E7CA
-secondaryFixedDim BDCBAF
-onSecondaryFixed 141E0C
-onSecondaryFixedVariant 3F4A35
-tertiaryFixed BBECEA
-tertiaryFixedDim A0CFCE
-onTertiaryFixed 002020
-onTertiaryFixedVariant 1E4E4D
-text E1E4D9
-subtext1 C4C8BB
-subtext0 8E9286
-overlay2 7D8075
-overlay1 6A6D63
-overlay0 585C52
-surface2 474A42
-surface1 353931
-surface0 22261F
-base 11140E
-mantle 090B08
-crust 040503
-success ADE29A
-rosewater ACD28F
-flamingo 9BD4A0
-pink 8AD0EF
-mauve 91CEF5
-red 86D6BE
-maroon 81D4DA
-peach 90D6AE
-yellow A7D293
-green A3D398
-teal 82D5C7
-sky 80D5D3
-sapphire 86D2E8
-blue 9CCBFA
-lavender 81D3E2 \ No newline at end of file
diff --git a/src/caelestia/data/schemes/dynamic/alt1/light.txt b/src/caelestia/data/schemes/dynamic/alt1/light.txt
deleted file mode 100644
index 84b0e64..0000000
--- a/src/caelestia/data/schemes/dynamic/alt1/light.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-primary_paletteKeyColor 5E8046
-secondary_paletteKeyColor 6E7B62
-tertiary_paletteKeyColor 517F7E
-neutral_paletteKeyColor 75786F
-neutral_variant_paletteKeyColor 74796D
-background F9FAF0
-onBackground 191D16
-surface F9FAF0
-surfaceDim D9DBD1
-surfaceBright F9FAF0
-surfaceContainerLowest FFFFFF
-surfaceContainerLow F3F5EA
-surfaceContainer EDEFE4
-surfaceContainerHigh E7E9DF
-surfaceContainerHighest E1E4D9
-onSurface 191D16
-surfaceVariant E0E4D6
-onSurfaceVariant 44483E
-inverseSurface 2E312A
-inverseOnSurface F0F2E7
-outline 71766B
-outlineVariant C4C8BB
-shadow 000000
-scrim 000000
-surfaceTint 476730
-primary 476730
-onPrimary FFFFFF
-primaryContainer C7EEA9
-onPrimaryContainer 304F1A
-inversePrimary ACD28F
-secondary 56624B
-onSecondary FFFFFF
-secondaryContainer D7E4C7
-onSecondaryContainer 3F4A35
-tertiary 4F7C7C
-onTertiary FFFFFF
-tertiaryContainer 4F7C7C
-onTertiaryContainer FFFFFF
-error BA1A1A
-onError FFFFFF
-errorContainer FFDAD6
-onErrorContainer 93000A
-primaryFixed C7EEA9
-primaryFixedDim ACD28F
-onPrimaryFixed 0A2000
-onPrimaryFixedVariant 304F1A
-secondaryFixed D9E7CA
-secondaryFixedDim BDCBAF
-onSecondaryFixed 141E0C
-onSecondaryFixedVariant 3F4A35
-tertiaryFixed BBECEA
-tertiaryFixedDim A0CFCE
-onTertiaryFixed 002020
-onTertiaryFixedVariant 1E4E4D
-text 191D16
-subtext1 44483E
-subtext0 71766B
-overlay2 84887E
-overlay1 989C92
-overlay0 ABAFA4
-surface2 BFC1B7
-surface1 D2D4C9
-surface0 E6E8DD
-base F9FAF0
-mantle F4F6E5
-crust F1F4DD
-success 4A9F23
-rosewater 3D6837
-flamingo 34693F
-pink 006968
-mauve 00696F
-red 156A59
-maroon 006876
-peach 256B4A
-yellow 426733
-green 476730
-teal 00677B
-sky 2E628B
-sapphire 206486
-blue 0F6681
-lavender 0D6A5F \ No newline at end of file
diff --git a/src/caelestia/data/schemes/dynamic/alt2/dark.txt b/src/caelestia/data/schemes/dynamic/alt2/dark.txt
deleted file mode 100644
index 9b36dee..0000000
--- a/src/caelestia/data/schemes/dynamic/alt2/dark.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-primary_paletteKeyColor 5E76AB
-secondary_paletteKeyColor 70778B
-tertiary_paletteKeyColor 8B6D8C
-neutral_paletteKeyColor 76777D
-neutral_variant_paletteKeyColor 757780
-background 121318
-onBackground E2E2E9
-surface 121318
-surfaceDim 121318
-surfaceBright 37393E
-surfaceContainerLowest 0C0E13
-surfaceContainerLow 1A1B20
-surfaceContainer 1E1F25
-surfaceContainerHigh 282A2F
-surfaceContainerHighest 33353A
-onSurface E2E2E9
-surfaceVariant 44474F
-onSurfaceVariant C5C6D0
-inverseSurface E2E2E9
-inverseOnSurface 2F3036
-outline 8E9099
-outlineVariant 44474F
-shadow 000000
-scrim 000000
-surfaceTint AEC6FF
-primary AEC6FF
-onPrimary 122F60
-primaryContainer 2C4678
-onPrimaryContainer D8E2FF
-inversePrimary 455E91
-secondary BFC6DC
-onSecondary 293041
-secondaryContainer 3F4759
-onSecondaryContainer DBE2F9
-tertiary DFBBDE
-onTertiary 402843
-tertiaryContainer A786A7
-onTertiaryContainer 000000
-error FFB4AB
-onError 690005
-errorContainer 93000A
-onErrorContainer FFDAD6
-primaryFixed D8E2FF
-primaryFixedDim AEC6FF
-onPrimaryFixed 001A43
-onPrimaryFixedVariant 2C4678
-secondaryFixed DBE2F9
-secondaryFixedDim BFC6DC
-onSecondaryFixed 141B2C
-onSecondaryFixedVariant 3F4759
-tertiaryFixed FCD7FB
-tertiaryFixedDim DFBBDE
-onTertiaryFixed 2A132D
-onTertiaryFixedVariant 583E5A
-text E2E2E9
-subtext1 C5C6D0
-subtext0 8E9099
-overlay2 7D7E87
-overlay1 6A6C74
-overlay0 595A62
-surface2 47494F
-surface1 36373D
-surface0 23242A
-base 121318
-mantle 0B0C0F
-crust 070709
-success 93E5B6
-rosewater 9BD4A1
-flamingo 84D5C3
-pink A1CAFE
-mauve A5C8FF
-red 80D3DE
-maroon 8ECFF2
-peach 80D5D0
-yellow 93D5A9
-green 8DD5B3
-teal 84D2E5
-sky 89D0ED
-sapphire 9CCBFB
-blue ACC6FF
-lavender 94CDF7 \ No newline at end of file
diff --git a/src/caelestia/data/schemes/dynamic/alt2/light.txt b/src/caelestia/data/schemes/dynamic/alt2/light.txt
deleted file mode 100644
index 00483f0..0000000
--- a/src/caelestia/data/schemes/dynamic/alt2/light.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-primary_paletteKeyColor 5E76AB
-secondary_paletteKeyColor 70778B
-tertiary_paletteKeyColor 8B6D8C
-neutral_paletteKeyColor 76777D
-neutral_variant_paletteKeyColor 757780
-background FAF9FF
-onBackground 1A1B20
-surface FAF9FF
-surfaceDim DAD9E0
-surfaceBright FAF9FF
-surfaceContainerLowest FFFFFF
-surfaceContainerLow F3F3FA
-surfaceContainer EEEDF4
-surfaceContainerHigh E8E7EF
-surfaceContainerHighest E2E2E9
-onSurface 1A1B20
-surfaceVariant E1E2EC
-onSurfaceVariant 44474F
-inverseSurface 2F3036
-inverseOnSurface F1F0F7
-outline 72747D
-outlineVariant C5C6D0
-shadow 000000
-scrim 000000
-surfaceTint 455E91
-primary 455E91
-onPrimary FFFFFF
-primaryContainer D8E2FF
-onPrimaryContainer 2C4678
-inversePrimary AEC6FF
-secondary 575E71
-onSecondary FFFFFF
-secondaryContainer DBE2F9
-onSecondaryContainer 3F4759
-tertiary 896B8A
-onTertiary FFFFFF
-tertiaryContainer 896B8A
-onTertiaryContainer FFFFFF
-error BA1A1A
-onError FFFFFF
-errorContainer FFDAD6
-onErrorContainer 93000A
-primaryFixed D8E2FF
-primaryFixedDim AEC6FF
-onPrimaryFixed 001A43
-onPrimaryFixedVariant 2C4678
-secondaryFixed DBE2F9
-secondaryFixedDim BFC6DC
-onSecondaryFixed 141B2C
-onSecondaryFixedVariant 3F4759
-tertiaryFixed FCD7FB
-tertiaryFixedDim DFBBDE
-onTertiaryFixed 2A132D
-onTertiaryFixedVariant 583E5A
-text 1A1B20
-subtext1 44474F
-subtext0 72747D
-overlay2 85878F
-overlay1 999BA3
-overlay0 ACADB5
-surface2 C0C0C7
-surface1 D3D2D9
-surface0 E7E6ED
-base FAF9FF
-mantle EDEAFF
-crust E5E0FF
-success 00A25A
-rosewater 1F6A4E
-flamingo 056A5C
-pink 15667E
-mauve 1B6685
-red 006972
-maroon 266389
-peach 006A67
-yellow 2B6A46
-green 35693F
-teal 30628C
-sky 435E91
-sapphire 3D5F8F
-blue 37608E
-lavender 0A6777 \ No newline at end of file
diff --git a/src/caelestia/data/schemes/dynamic/default/dark.txt b/src/caelestia/data/schemes/dynamic/default/dark.txt
deleted file mode 100644
index 001e000..0000000
--- a/src/caelestia/data/schemes/dynamic/default/dark.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-primary_paletteKeyColor 2E8195
-secondary_paletteKeyColor 647B82
-tertiary_paletteKeyColor 707598
-neutral_paletteKeyColor 72787A
-neutral_variant_paletteKeyColor 70797C
-background 0F1416
-onBackground DEE3E6
-surface 0F1416
-surfaceDim 0F1416
-surfaceBright 343A3C
-surfaceContainerLowest 090F11
-surfaceContainerLow 171C1E
-surfaceContainer 1B2022
-surfaceContainerHigh 252B2D
-surfaceContainerHighest 303638
-onSurface DEE3E6
-surfaceVariant 3F484B
-onSurfaceVariant BFC8CB
-inverseSurface DEE3E6
-inverseOnSurface 2C3133
-outline 899295
-outlineVariant 3F484B
-shadow 000000
-scrim 000000
-surfaceTint 85D2E7
-primary 85D2E7
-onPrimary 003641
-primaryContainer 004E5D
-onPrimaryContainer AEECFF
-inversePrimary 00687B
-secondary B2CBD3
-onSecondary 1D343A
-secondaryContainer 364D53
-onSecondaryContainer CEE7EF
-tertiary BFC4EB
-onTertiary 292E4D
-tertiaryContainer 898FB3
-onTertiaryContainer 000000
-error FFB4AB
-onError 690005
-errorContainer 93000A
-onErrorContainer FFDAD6
-primaryFixed AEECFF
-primaryFixedDim 85D2E7
-onPrimaryFixed 001F26
-onPrimaryFixedVariant 004E5D
-secondaryFixed CEE7EF
-secondaryFixedDim B2CBD3
-onSecondaryFixed 061F25
-onSecondaryFixedVariant 344A51
-tertiaryFixed DEE1FF
-tertiaryFixedDim BFC4EB
-onTertiaryFixed 141937
-onTertiaryFixedVariant 3F4565
-text DEE3E6
-subtext1 BFC8CB
-subtext0 899295
-overlay2 788083
-overlay1 666D70
-overlay0 555C5E
-surface2 434A4D
-surface1 32393B
-surface0 202628
-base 0F1416
-mantle 090C0D
-crust 050607
-success 93E5B6
-rosewater 9BD4A1
-flamingo 84D5C3
-pink 8CD0F1
-mauve 91CEF5
-red 80D4DC
-maroon 85D2E7
-peach 80D5D0
-yellow 93D5A9
-green 8DD5B3
-teal 81D3E0
-sky 83D2E4
-sapphire 8AD1EE
-blue 9CCBFA
-lavender 86D1EB \ No newline at end of file
diff --git a/src/caelestia/data/schemes/dynamic/default/light.txt b/src/caelestia/data/schemes/dynamic/default/light.txt
deleted file mode 100644
index 09648cf..0000000
--- a/src/caelestia/data/schemes/dynamic/default/light.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-primary_paletteKeyColor 2E8195
-secondary_paletteKeyColor 647B82
-tertiary_paletteKeyColor 707598
-neutral_paletteKeyColor 72787A
-neutral_variant_paletteKeyColor 70797C
-background F5FAFC
-onBackground 171C1E
-surface F5FAFC
-surfaceDim D5DBDD
-surfaceBright F5FAFC
-surfaceContainerLowest FFFFFF
-surfaceContainerLow EFF4F7
-surfaceContainer E9EFF1
-surfaceContainerHigh E4E9EB
-surfaceContainerHighest DEE3E6
-onSurface 171C1E
-surfaceVariant DBE4E7
-onSurfaceVariant 3F484B
-inverseSurface 2C3133
-inverseOnSurface ECF2F4
-outline 6D7679
-outlineVariant BFC8CB
-shadow 000000
-scrim 000000
-surfaceTint 00687B
-primary 00687B
-onPrimary FFFFFF
-primaryContainer AEECFF
-onPrimaryContainer 004E5D
-inversePrimary 85D2E7
-secondary 4B6269
-onSecondary FFFFFF
-secondaryContainer CEE7EF
-onSecondaryContainer 344A51
-tertiary 6D7395
-onTertiary FFFFFF
-tertiaryContainer 6D7395
-onTertiaryContainer FFFFFF
-error BA1A1A
-onError FFFFFF
-errorContainer FFDAD6
-onErrorContainer 93000A
-primaryFixed AEECFF
-primaryFixedDim 85D2E7
-onPrimaryFixed 001F26
-onPrimaryFixedVariant 004E5D
-secondaryFixed CEE7EF
-secondaryFixedDim B2CBD3
-onSecondaryFixed 061F25
-onSecondaryFixedVariant 344A51
-tertiaryFixed DEE1FF
-tertiaryFixedDim BFC4EB
-onTertiaryFixed 141937
-onTertiaryFixedVariant 3F4565
-text 171C1E
-subtext1 3F484B
-subtext0 6D7679
-overlay2 80888B
-overlay1 949C9F
-overlay0 A7AFB1
-surface2 BBC1C4
-surface1 CED4D6
-surface0 E2E8EA
-base F5FAFC
-mantle E9F4F8
-crust E1F0F6
-success 00A25A
-rosewater 1F6A4E
-flamingo 056A5C
-pink 046877
-mauve 00687B
-red 006970
-maroon 02677E
-peach 006A67
-yellow 2B6A46
-green 35693F
-teal 0D6680
-sky 2E628B
-sapphire 206486
-blue 156583
-lavender 036873 \ No newline at end of file
diff --git a/src/caelestia/parser.py b/src/caelestia/parser.py
index 6d0b552..824158a 100644
--- a/src/caelestia/parser.py
+++ b/src/caelestia/parser.py
@@ -50,12 +50,29 @@ def parse_args() -> (argparse.ArgumentParser, argparse.Namespace):
# Create parser for scheme opts
scheme_parser = command_parser.add_parser("scheme", help="manage the colour scheme")
- scheme_parser.set_defaults(cls=scheme.Command)
- scheme_parser.add_argument("-r", "--random", action="store_true", help="switch to a random scheme")
- scheme_parser.add_argument("-n", "--name", choices=get_scheme_names(), help="the name of the scheme to switch to")
- scheme_parser.add_argument("-f", "--flavour", help="the flavour to switch to")
- scheme_parser.add_argument("-m", "--mode", choices=["dark", "light"], help="the mode to switch to")
- scheme_parser.add_argument("-v", "--variant", choices=scheme_variants, help="the variant to switch to")
+ scheme_command_parser = scheme_parser.add_subparsers(title="subcommands")
+
+ list_parser = scheme_command_parser.add_parser("list", help="list available schemes")
+ list_parser.set_defaults(cls=scheme.List)
+ list_parser.add_argument("-n", "--names", action="store_true", help="list scheme names")
+ list_parser.add_argument("-f", "--flavours", action="store_true", help="list scheme flavours")
+ list_parser.add_argument("-m", "--modes", action="store_true", help="list scheme modes")
+ list_parser.add_argument("-v", "--variants", action="store_true", help="list scheme variants")
+
+ get_parser = scheme_command_parser.add_parser("get", help="get scheme properties")
+ get_parser.set_defaults(cls=scheme.Get)
+ get_parser.add_argument("-n", "--name", action="store_true", help="print the current scheme name")
+ get_parser.add_argument("-f", "--flavour", action="store_true", help="print the current scheme flavour")
+ get_parser.add_argument("-m", "--mode", action="store_true", help="print the current scheme mode")
+ get_parser.add_argument("-v", "--variant", action="store_true", help="print the current scheme variant")
+
+ set_parser = scheme_command_parser.add_parser("set", help="set the current scheme")
+ set_parser.set_defaults(cls=scheme.Set)
+ set_parser.add_argument("-r", "--random", action="store_true", help="switch to a random scheme")
+ set_parser.add_argument("-n", "--name", choices=get_scheme_names(), help="the name of the scheme to switch to")
+ set_parser.add_argument("-f", "--flavour", help="the flavour to switch to")
+ set_parser.add_argument("-m", "--mode", choices=["dark", "light"], help="the mode to switch to")
+ set_parser.add_argument("-v", "--variant", choices=scheme_variants, help="the variant to switch to")
# Create parser for screenshot opts
screenshot_parser = command_parser.add_parser("screenshot", help="take a screenshot")
diff --git a/src/caelestia/subcommands/scheme.py b/src/caelestia/subcommands/scheme.py
index c95df96..c8842f7 100644
--- a/src/caelestia/subcommands/scheme.py
+++ b/src/caelestia/subcommands/scheme.py
@@ -1,10 +1,10 @@
from argparse import Namespace
-from caelestia.utils.scheme import get_scheme
+from caelestia.utils.scheme import get_scheme, get_scheme_flavours, get_scheme_modes, get_scheme_names, scheme_variants
from caelestia.utils.theme import apply_colours
-class Command:
+class Set:
args: Namespace
def __init__(self, args: Namespace) -> None:
@@ -27,4 +27,60 @@ class Command:
scheme.variant = self.args.variant
apply_colours(scheme.colours, scheme.mode)
else:
+ print("No args given. Use --name, --flavour, --mode, --variant or --random to set a scheme")
+
+
+class Get:
+ args: Namespace
+
+ def __init__(self, args: Namespace) -> None:
+ self.args = args
+
+ def run(self) -> None:
+ scheme = get_scheme()
+
+ if self.args.name or self.args.flavour or self.args.mode or self.args.variant:
+ if self.args.name:
+ print(scheme.name)
+ if self.args.flavour:
+ print(scheme.flavour)
+ if self.args.mode:
+ print(scheme.mode)
+ if self.args.variant:
+ print(scheme.variant)
+ else:
print(scheme)
+
+
+class List:
+ args: Namespace
+
+ def __init__(self, args: Namespace) -> None:
+ self.args = args
+
+ def run(self) -> None:
+ multiple = [self.args.names, self.args.flavours, self.args.modes, self.args.variants].count(True) > 1
+
+ if self.args.names or self.args.flavours or self.args.modes or self.args.variants:
+ if self.args.names:
+ if multiple:
+ print("Names:", *get_scheme_names())
+ else:
+ print("\n".join(get_scheme_names()))
+ if self.args.flavours:
+ if multiple:
+ print("Flavours:", *get_scheme_flavours())
+ else:
+ print("\n".join(get_scheme_flavours()))
+ if self.args.modes:
+ if multiple:
+ print("Modes:", *get_scheme_modes())
+ else:
+ print("\n".join(get_scheme_modes()))
+ if self.args.variants:
+ if multiple:
+ print("Variants:", *scheme_variants)
+ else:
+ print("\n".join(scheme_variants))
+ else:
+ print("No args given. Use --names, --flavours, --modes or --variants to list schemes")