From 4816912b35b4b1f248923bfaf1e81d53c5446ab2 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sat, 2 May 2026 22:37:49 +0200 Subject: [PATCH] Presets added based on JSON colorscheme file. pycache needs fixing. --- cli/pyproject.toml | 1 + cli/src/zshell/__init__.py | 2 +- .../__pycache__/__init__.cpython-314.pyc | Bin 1026 -> 1094 bytes .../__pycache__/__main__.cpython-314.pyc | Bin 259 -> 254 bytes .../assets/presets/catppuccin/catppuccin.json | 544 ++++++++++++++++++ .../__pycache__/preset.cpython-314.pyc | Bin 0 -> 3848 bytes .../__pycache__/scheme.cpython-313.pyc | Bin 7101 -> 0 bytes .../__pycache__/scheme.cpython-314.pyc | Bin 10447 -> 27921 bytes .../__pycache__/screenshot.cpython-313.pyc | Bin 978 -> 0 bytes .../__pycache__/screenshot.cpython-314.pyc | Bin 1060 -> 1055 bytes .../__pycache__/shell.cpython-313.pyc | Bin 2184 -> 0 bytes .../__pycache__/shell.cpython-314.pyc | Bin 2622 -> 2643 bytes .../__pycache__/wallpaper.cpython-313.pyc | Bin 1920 -> 0 bytes .../__pycache__/wallpaper.cpython-314.pyc | Bin 2376 -> 2450 bytes cli/src/zshell/subcommands/preset.py | 55 +- .../utils/__pycache__/presets.cpython-314.pyc | Bin 0 -> 4525 bytes .../schemepalettes.cpython-313.pyc | Bin 1388 -> 0 bytes .../schemepalettes.cpython-314.pyc | Bin 0 -> 2054 bytes cli/src/zshell/utils/presets.py | 61 ++ 19 files changed, 659 insertions(+), 4 deletions(-) create mode 100644 cli/src/zshell/assets/presets/catppuccin/catppuccin.json create mode 100644 cli/src/zshell/subcommands/__pycache__/preset.cpython-314.pyc delete mode 100644 cli/src/zshell/subcommands/__pycache__/scheme.cpython-313.pyc delete mode 100644 cli/src/zshell/subcommands/__pycache__/screenshot.cpython-313.pyc delete mode 100644 cli/src/zshell/subcommands/__pycache__/shell.cpython-313.pyc delete mode 100644 cli/src/zshell/subcommands/__pycache__/wallpaper.cpython-313.pyc create mode 100644 cli/src/zshell/utils/__pycache__/presets.cpython-314.pyc delete mode 100644 cli/src/zshell/utils/__pycache__/schemepalettes.cpython-313.pyc create mode 100644 cli/src/zshell/utils/__pycache__/schemepalettes.cpython-314.pyc create mode 100644 cli/src/zshell/utils/presets.py diff --git a/cli/pyproject.toml b/cli/pyproject.toml index a234745..d7e1888 100644 --- a/cli/pyproject.toml +++ b/cli/pyproject.toml @@ -9,6 +9,7 @@ version = "0.1.0" dependencies = [ "typer", "pillow", + "jinja2", "materialyoucolor" ] diff --git a/cli/src/zshell/__init__.py b/cli/src/zshell/__init__.py index 886455a..a3ad048 100644 --- a/cli/src/zshell/__init__.py +++ b/cli/src/zshell/__init__.py @@ -8,7 +8,7 @@ app.add_typer(shell.app, name="shell") app.add_typer(scheme.app, name="scheme") app.add_typer(screenshot.app, name="screenshot") app.add_typer(wallpaper.app, name="wallpaper") -# app.add_typer(preset.app, name="preset") +app.add_typer(preset.app, name="preset") def main() -> None: diff --git a/cli/src/zshell/__pycache__/__init__.cpython-314.pyc b/cli/src/zshell/__pycache__/__init__.cpython-314.pyc index 59c83993270082698dd3eeb248d2cdc8e8c2d707..97f79ca07c74cfd0b4e7e3ec4fc83c1ee6b1f437 100644 GIT binary patch delta 508 zcmZqTIL5)N&Bx2d00dHT-!i)=@=7wcO;p$C@Zc!nkY|Wxn(V+RGBJ-^nk$woKpdnD z6~wXxh)kTKD2ZK?6)1TQmn2(&$Yc&i#d_>o*#ksSZ36LvID%NsnIPgo$6?pWfmJ6b zvd$nbafTpnafTd$5+2zgCS?Xqo|hm~H5qSlC+6klmn4>C=I0grX|hi4W>n+2#a2+1 zTAW%kc_X6?QxV7HQ;dm>Qj>j{G+70Kn)oJHF~uA30a-;tAVL60++xX1%*-ni1xW*O zF*}fGV7SA=-sTEcq{%y(li4A%hy$dSHKej2wWtW>-&>rCDJk(KU_MB55t^|aHo5sJ zr8%i~Mbbc7Mj$S31ri^a85tSxGAP|<;JMG>eU-s`@?7R4&Bx2d00a--PR)#($ScX{F;QKgO`ai^DL`Oif~+)WEN6fyNC7H{WeE_P zI72ZQyCiFX5UO$zFNiIO)tm_;4m2OTPPPD{$vljT%s|=628^PNLX+JX6*Pl5#TkOQ z#2In~O1OiVlo>R+UxLihWW2?ln3tDdl30?NpI7Xs$ujvQqncz93q+13FEKZ@h!w~w zVgnKElSP>l6|M9$@^e%5s}hql^xZQ{0*dmpQj<%H^{aG~5{q;TOY|p~GikC405$MV zUdj}2zzfnU2qO4_#4VQG#LT=R5s)+x7qbJ228KH<>}{@KMVdU5O_&`*Zn1_`7Niyx z34^q7CZ?psmw@>oeMM*{a@geNr`p3wv&Bx2d00fn_M<#N&37G0<S+%m6|+pVJrY24-Sg} diff --git a/cli/src/zshell/assets/presets/catppuccin/catppuccin.json b/cli/src/zshell/assets/presets/catppuccin/catppuccin.json new file mode 100644 index 0000000..283bba4 --- /dev/null +++ b/cli/src/zshell/assets/presets/catppuccin/catppuccin.json @@ -0,0 +1,544 @@ +{ + "id": "catppuccin", + "name": "Catppuccin", + "version": "1.0.0", + "author": "Catppuccin Org", + "description": "Soothing pastel theme for the high-spirited!", + "dark": {}, + "light": {}, + "variants": { + "type": "multi", + "defaults": { + "dark": { "flavor": "mocha", "accent": "mauve" }, + "light": { "flavor": "latte", "accent": "mauve" } + }, + "flavors": [ + { + "id": "latte", + "name": "Latte", + "light": { + "surface": "#ccd0da", + "surfaceText": "#4c4f69", + "surfaceVariant": "#eff1f5", + "surfaceVariantText": "#6c6f85", + "background": "#eff1f5", + "backgroundText": "#4c4f69", + "outline": "#9ca0b0", + "surfaceContainer": "#eff1f5", + "surfaceContainerHigh": "#e6e9ef", + "surfaceContainerHighest": "#dce0e8", + "error": "#d20f39", + "warning": "#fe640b", + "info": "#1e66f5" + } + }, + { + "id": "frappe", + "name": "Frappé", + "dark": { + "surface": "#414559", + "surfaceText": "#c6d0f5", + "surfaceVariant": "#303446", + "surfaceVariantText": "#a5adce", + "background": "#303446", + "backgroundText": "#c6d0f5", + "outline": "#737994", + "surfaceContainer": "#303446", + "surfaceContainerHigh": "#292c3c", + "surfaceContainerHighest": "#232634", + "error": "#e78284", + "warning": "#ef9f76", + "info": "#8caaee" + } + }, + { + "id": "macchiato", + "name": "Macchiato", + "dark": { + "surface": "#363a4f", + "surfaceText": "#cad3f5", + "surfaceVariant": "#24273a", + "surfaceVariantText": "#a5adcb", + "background": "#24273a", + "backgroundText": "#cad3f5", + "outline": "#6e738d", + "surfaceContainer": "#24273a", + "surfaceContainerHigh": "#1e2030", + "surfaceContainerHighest": "#181926", + "error": "#ed8796", + "warning": "#f5a97f", + "info": "#8aadf4" + } + }, + { + "id": "mocha", + "name": "Mocha", + "dark": { + "surface": "#313244", + "surfaceText": "#cdd6f4", + "surfaceVariant": "#1e1e2e", + "surfaceVariantText": "#a6adc8", + "background": "#1e1e2e", + "backgroundText": "#cdd6f4", + "outline": "#6c7086", + "surfaceContainer": "#1e1e2e", + "surfaceContainerHigh": "#181825", + "surfaceContainerHighest": "#11111b", + "error": "#f38ba8", + "warning": "#fab387", + "info": "#89b4fa" + } + } + ], + "accents": [ + { + "id": "rosewater", + "name": "Rosewater", + "latte": { + "primary": "#dc8a78", + "primaryText": "#eff1f5", + "primaryContainer": "#e1a99d", + "secondary": "#d8c7c4", + "surfaceTint": "#e1a99d" + }, + "frappe": { + "primary": "#f2d5cf", + "primaryText": "#303446", + "primaryContainer": "#b8a5a6", + "secondary": "#a2748b", + "surfaceTint": "#b8a5a6" + }, + "macchiato": { + "primary": "#f4dbd6", + "primaryText": "#24273a", + "primaryContainer": "#b6a6a7", + "secondary": "#9f6f8d", + "surfaceTint": "#b6a6a7" + }, + "mocha": { + "primary": "#f5e0dc", + "primaryText": "#1e1e2e", + "primaryContainer": "#b5a6a8", + "secondary": "#9d6d87", + "surfaceTint": "#b5a6a8" + } + }, + { + "id": "flamingo", + "name": "Flamingo", + "latte": { + "primary": "#dd7878", + "primaryText": "#eff1f5", + "primaryContainer": "#e29c9d", + "secondary": "#d7c3c4", + "surfaceTint": "#e29c9d" + }, + "frappe": { + "primary": "#eebebe", + "primaryText": "#303446", + "primaryContainer": "#b5949a", + "secondary": "#9d6b80", + "surfaceTint": "#b5949a" + }, + "macchiato": { + "primary": "#f0c6c6", + "primaryText": "#24273a", + "primaryContainer": "#b3979c", + "secondary": "#996780", + "surfaceTint": "#b3979c" + }, + "mocha": { + "primary": "#f2cdcd", + "primaryText": "#1e1e2e", + "primaryContainer": "#b3999e", + "secondary": "#98667c", + "surfaceTint": "#b3999e" + } + }, + { + "id": "pink", + "name": "Pink", + "latte": { + "primary": "#ea76cb", + "primaryText": "#eff1f5", + "primaryContainer": "#eb9bd7", + "secondary": "#d9c7d5", + "surfaceTint": "#eb9bd7" + }, + "frappe": { + "primary": "#f4b8e4", + "primaryText": "#303446", + "primaryContainer": "#b990b5", + "secondary": "#996e9e", + "surfaceTint": "#b990b5" + }, + "macchiato": { + "primary": "#f5bde6", + "primaryText": "#24273a", + "primaryContainer": "#b791b2", + "secondary": "#95689a", + "surfaceTint": "#b791b2" + }, + "mocha": { + "primary": "#f5c2e7", + "primaryText": "#1e1e2e", + "primaryContainer": "#b591b0", + "secondary": "#966597", + "surfaceTint": "#b591b0" + } + }, + { + "id": "mauve", + "name": "Mauve", + "latte": { + "primary": "#8839ef", + "primaryText": "#eff1f5", + "primaryContainer": "#a670f1", + "secondary": "#c2b8d0", + "surfaceTint": "#a670f1" + }, + "frappe": { + "primary": "#ca9ee6", + "primaryText": "#303446", + "primaryContainer": "#9c7eb6", + "secondary": "#7d6799", + "surfaceTint": "#9c7eb6" + }, + "macchiato": { + "primary": "#c6a0f6", + "primaryText": "#24273a", + "primaryContainer": "#967cbe", + "secondary": "#766597", + "surfaceTint": "#967cbe" + }, + "mocha": { + "primary": "#cba6f7", + "primaryText": "#1e1e2e", + "primaryContainer": "#977ebb", + "secondary": "#756294", + "surfaceTint": "#977ebb" + } + }, + { + "id": "red", + "name": "Red", + "latte": { + "primary": "#d20f39", + "primaryText": "#eff1f5", + "primaryContainer": "#da5371", + "secondary": "#c0a0a8", + "surfaceTint": "#da5371" + }, + "frappe": { + "primary": "#e78284", + "primaryText": "#303446", + "primaryContainer": "#b06a72", + "secondary": "#8b5d66", + "surfaceTint": "#b06a72" + }, + "macchiato": { + "primary": "#ed8796", + "primaryText": "#24273a", + "primaryContainer": "#b16b7a", + "secondary": "#865a69", + "surfaceTint": "#b16b7a" + }, + "mocha": { + "primary": "#f38ba8", + "primaryText": "#1e1e2e", + "primaryContainer": "#b46b84", + "secondary": "#85596b", + "surfaceTint": "#b46b84" + } + }, + { + "id": "maroon", + "name": "Maroon", + "latte": { + "primary": "#e64553", + "primaryText": "#eff1f5", + "primaryContainer": "#e87883", + "secondary": "#cfb7ba", + "surfaceTint": "#e87883" + }, + "frappe": { + "primary": "#ea999c", + "primaryText": "#303446", + "primaryContainer": "#b27a83", + "secondary": "#92626f", + "surfaceTint": "#b27a83" + }, + "macchiato": { + "primary": "#ee99a0", + "primaryText": "#24273a", + "primaryContainer": "#b27781", + "secondary": "#8c5e6c", + "surfaceTint": "#b27781" + }, + "mocha": { + "primary": "#eba0ac", + "primaryText": "#1e1e2e", + "primaryContainer": "#ae7987", + "secondary": "#895b6c", + "surfaceTint": "#ae7987" + } + }, + { + "id": "peach", + "name": "Peach", + "latte": { + "primary": "#fe640b", + "primaryText": "#eff1f5", + "primaryContainer": "#f98e51", + "secondary": "#c9b7ad", + "surfaceTint": "#f98e51" + }, + "frappe": { + "primary": "#ef9f76", + "primaryText": "#303446", + "primaryContainer": "#b67f68", + "secondary": "#8f6a5f", + "surfaceTint": "#b67f68" + }, + "macchiato": { + "primary": "#f5a97f", + "primaryText": "#24273a", + "primaryContainer": "#b7836a", + "secondary": "#8c695e", + "surfaceTint": "#b7836a" + }, + "mocha": { + "primary": "#fab387", + "primaryText": "#1e1e2e", + "primaryContainer": "#b8876d", + "secondary": "#8b6a5d", + "surfaceTint": "#b8876d" + } + }, + { + "id": "yellow", + "name": "Yellow", + "latte": { + "primary": "#df8e1d", + "primaryText": "#eff1f5", + "primaryContainer": "#e4ac5d", + "secondary": "#c6baaa", + "surfaceTint": "#e4ac5d" + }, + "frappe": { + "primary": "#e5c890", + "primaryText": "#303446", + "primaryContainer": "#af9b7a", + "secondary": "#948062", + "surfaceTint": "#af9b7a" + }, + "macchiato": { + "primary": "#eed49f", + "primaryText": "#24273a", + "primaryContainer": "#b2a181", + "secondary": "#947e62", + "surfaceTint": "#b2a181" + }, + "mocha": { + "primary": "#f9e2af", + "primaryText": "#1e1e2e", + "primaryContainer": "#b8a889", + "secondary": "#978265", + "surfaceTint": "#b8a889" + } + }, + { + "id": "green", + "name": "Green", + "latte": { + "primary": "#40a02b", + "primaryText": "#eff1f5", + "primaryContainer": "#74b867", + "secondary": "#9fbd9b", + "surfaceTint": "#74b867" + }, + "frappe": { + "primary": "#a6d189", + "primaryText": "#303446", + "primaryContainer": "#83a275", + "secondary": "#648e5e", + "surfaceTint": "#83a275" + }, + "macchiato": { + "primary": "#a6da95", + "primaryText": "#24273a", + "primaryContainer": "#80a57a", + "secondary": "#5c8a61", + "surfaceTint": "#80a57a" + }, + "mocha": { + "primary": "#a6e3a1", + "primaryText": "#1e1e2e", + "primaryContainer": "#7ea87f", + "secondary": "#5b8964", + "surfaceTint": "#7ea87f" + } + }, + { + "id": "teal", + "name": "Teal", + "latte": { + "primary": "#179299", + "primaryText": "#eff1f5", + "primaryContainer": "#57aeb4", + "secondary": "#93b4b7", + "surfaceTint": "#57aeb4" + }, + "frappe": { + "primary": "#81c8be", + "primaryText": "#303446", + "primaryContainer": "#699b9a", + "secondary": "#588084", + "surfaceTint": "#699b9a" + }, + "macchiato": { + "primary": "#8bd5ca", + "primaryText": "#24273a", + "primaryContainer": "#6da29f", + "secondary": "#577e83", + "surfaceTint": "#6da29f" + }, + "mocha": { + "primary": "#94e2d5", + "primaryText": "#1e1e2e", + "primaryContainer": "#71a8a4", + "secondary": "#588284", + "surfaceTint": "#71a8a4" + } + }, + { + "id": "sky", + "name": "Sky", + "latte": { + "primary": "#04a5e5", + "primaryText": "#eff1f5", + "primaryContainer": "#4abcea", + "secondary": "#a4b9c2", + "surfaceTint": "#4abcea" + }, + "frappe": { + "primary": "#99d1db", + "primaryText": "#303446", + "primaryContainer": "#79a2af", + "secondary": "#628494", + "surfaceTint": "#79a2af" + }, + "macchiato": { + "primary": "#91d7e3", + "primaryText": "#24273a", + "primaryContainer": "#71a3b0", + "secondary": "#5e7e8c", + "surfaceTint": "#71a3b0" + }, + "mocha": { + "primary": "#89dceb", + "primaryText": "#1e1e2e", + "primaryContainer": "#69a3b3", + "secondary": "#5a7b88", + "surfaceTint": "#69a3b3" + } + }, + { + "id": "sapphire", + "name": "Sapphire", + "latte": { + "primary": "#209fb5", + "primaryText": "#eff1f5", + "primaryContainer": "#5db8c8", + "secondary": "#9eb9be", + "surfaceTint": "#5db8c8" + }, + "frappe": { + "primary": "#85c1dc", + "primaryText": "#303446", + "primaryContainer": "#6b96af", + "secondary": "#5e7b8e", + "surfaceTint": "#6b96af" + }, + "macchiato": { + "primary": "#7dc4e4", + "primaryText": "#24273a", + "primaryContainer": "#6396b1", + "secondary": "#5a7486", + "surfaceTint": "#6396b1" + }, + "mocha": { + "primary": "#74c7ec", + "primaryText": "#1e1e2e", + "primaryContainer": "#5a95b4", + "secondary": "#567080", + "surfaceTint": "#5a95b4" + } + }, + { + "id": "blue", + "name": "Blue", + "latte": { + "primary": "#1e66f5", + "primaryText": "#eff1f5", + "primaryContainer": "#5c90f5", + "secondary": "#b1bacb", + "surfaceTint": "#5c90f5" + }, + "frappe": { + "primary": "#8caaee", + "primaryText": "#303446", + "primaryContainer": "#7086bc", + "secondary": "#637195", + "surfaceTint": "#7086bc" + }, + "macchiato": { + "primary": "#8aadf4", + "primaryText": "#24273a", + "primaryContainer": "#6c85bc", + "secondary": "#5f6d8f", + "surfaceTint": "#6c85bc" + }, + "mocha": { + "primary": "#89b4fa", + "primaryText": "#1e1e2e", + "primaryContainer": "#6987bd", + "secondary": "#5d6c8b", + "surfaceTint": "#6987bd" + } + }, + { + "id": "lavender", + "name": "Lavender", + "latte": { + "primary": "#7287fd", + "primaryText": "#eff1f5", + "primaryContainer": "#97a7fb", + "secondary": "#cdcfdd", + "surfaceTint": "#97a7fb" + }, + "frappe": { + "primary": "#babbf1", + "primaryText": "#303446", + "primaryContainer": "#9192be", + "secondary": "#7175a1", + "surfaceTint": "#9192be" + }, + "macchiato": { + "primary": "#b7bdf8", + "primaryText": "#24273a", + "primaryContainer": "#8b91bf", + "secondary": "#6b709d", + "surfaceTint": "#8b91bf" + }, + "mocha": { + "primary": "#b4befe", + "primaryText": "#1e1e2e", + "primaryContainer": "#878ec0", + "secondary": "#676d99", + "surfaceTint": "#878ec0" + } + } + ] + } +} diff --git a/cli/src/zshell/subcommands/__pycache__/preset.cpython-314.pyc b/cli/src/zshell/subcommands/__pycache__/preset.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b59a248c03ff0ffc0240d944ef97da31e816fe8 GIT binary patch literal 3848 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 F{U1Y~pv?dP diff --git a/cli/src/zshell/subcommands/__pycache__/scheme.cpython-314.pyc b/cli/src/zshell/subcommands/__pycache__/scheme.cpython-314.pyc index 71fe8172881a230ded2b282cf4cf25f1b83c5f2e..3b93eea6a08888cc04c57ea6659da188fff7bddb 100644 GIT binary patch literal 27921 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�~*Z~=8R16`{>(v zr~;`f1pOXR!m07VUjDCtB}dcKk>U0r&U-VO3jz^ekbpD z3lJ@-csu`(^W%E+g0tS3GxRzi1X3rZvEa`D16$~m+uAoFt`~oFDp}3Y?^k&T) dHLTn|B;~azekJ~~9Tlgv{!&SQcZZGae*uUz_9g%T literal 10447 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 diff --git a/cli/src/zshell/subcommands/__pycache__/screenshot.cpython-314.pyc b/cli/src/zshell/subcommands/__pycache__/screenshot.cpython-314.pyc index 91589d5d4114af75e7adc499f1421a33f2c827aa..c376e6231db1df43d3252be75a1b54ff794ef93b 100644 GIT binary patch delta 42 wcmZ3&F`t85n~#@^0SGEepOK%Ns-K--nV*}f@1D7NA7dI50P4OBZvX%Q delta 47 zcmbQwv4n$Ln~#@^0SH#UnYxjC9;2v-enx(7s(w{sa)!QpW=TL%epYJo=ADdbOaMIS B4#@xj diff --git a/cli/src/zshell/subcommands/__pycache__/shell.cpython-313.pyc b/cli/src/zshell/subcommands/__pycache__/shell.cpython-313.pyc deleted file mode 100644 index af12c926f11d084ecb69ceb0cd57ba02dc91c7c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2184 zcmb_dL2nyH6rR}~ukAQaS{w=_4GK}!#?W*@avD;FKnp5Jh;5opDx_Mfob}3fy!N^? z8$ojl?IAamNEG>4Zpj6OTf~KHu8}X%R7j}h05?bO59ph**IrDqrIwNQy*KmTym{Z7 z_huXM_yB@&@%JAKVHKgLV&aczOK5zL5qgMBWa2LoZE{Spj!fkyrb-$wY5tZDpF}gQ z2_&?s6XYuNWeBYpO1fit3gY{LQDfj+j8fNiX| zE#&D#YX)--dl3+r$WCx`wP8;qpNmAh<1nYOsL z!Sc4_SYq8D!U5bWYAgVGh;IAqXh~^{ZDA7KCjP|4I-Z7!shH}VGJ$d^NeoVk1;<(5 z!#rf=ZL7Ga@&UHKTA{9GGsacAUgji2b8HVagd_f`o_9;OzLBx=`sW32k-BTP`s^hRMq$Vg*e}M+jvgbvnACm`W=}s!3WY z3K?({W%#noGz{icgq+0m6fh>jnV`c!d5C!#>e1Ig7D2OjfCNFMs^@n;`Z@X2wS#j9 zXO0q|9FiLOO5%I*?OuodF9Yg@5V%^XSe&rD`%M4^jl&r-1POt@E~bJc;A7)Jf&gZ! z7j_mN-Fo!JQR3qMXEid{Bl!QPG*!pV^$7P35w0Mj1OHV-GThyf8oAUX&Reka)spPj zON$dT)T$fJpd;X&6D#95oH(vk?15zzOsOCu>+C%s|CxGi_uHey?7`)OsiVZTL+Fwl z5+K*0{&Kd*wUX`S-7Jqa`5n=`mUuAy(e9fxth@^P71Tt%(t21{6#2Xadq?Jgz6A#b zz$aBY1}pTeAQG?$Z(^d^Nzz)9NmylbK>Fn3cw}_@!xI&coIQR!Dfqj`AIvmV9GaDx zN#g6tQ&jvCdC0q0u_+yt^0JV*nyFNHxb;NIH;I!~*L7qkH(Np$nz$Suxk_{ECA;i# zm3b6ywE#?@>uMz)nJ>B7b;n+y7eFhX3HBF|x{5J=j7~pBgHOWao8%8IwpF}ed{Ej{ z>l#u*TVvmiJs3YxFn+(GB4xNPq>C>E=y-z-+9l2sEyN;Ry?0yI+&v6q6Yy zGt{QquGd`Xv_oZw*i~VN6D-$Rd?)W`mEP>jlF7>B$M~6_p& delta 153 zcmcaCvQLChn~#@^0SGeer)BS+%m6|*`hUtyC zE8|B7Mn+f0DIpNLhzF=MnQ`(3b`i#;$sbttCvRpJot(j{Jo!DdvAi@;vVq|V3tzim zliw7R<&ravHi&FsyDDtHqvSe^%VZf=>CH(jnXEjnjGvhqnD{?10nMI#owEi2TB!ZxL0i_fRho9dE-hNPsOh#%5H6X7S8>jc(S}oXn`Is)lk#%0pv&v3wk%H? z&KxeT=$d28>+wYu$JZQL%Nw$dHMw?mnYz@9g@S4>*>a-_Bi20}rtaL00sCFLmBAl; zWFz@7xtrJ<-MjSZjr|Yyr+#Q3u5?`7xqgOVM}K87wttzSH!35S4>Am0t-Lo@MNpW4 zRq6tepkZ1i=dMv}PqE}M&Z2E0!Nq(D-&G66lIduy?A~g$Vb^^eFKa^@jMkfIqBKf1 zn&PeboDM<5%Hqyr$$d3E!sTferZj)&4vk-WRO!|O|8 zb~OXE0C2*JZ&>vDCroz2>QB&Iax&(}F6N7tPDj@^)^#Fc-KA1;{AOxgSs>y^?pwvI z6(lsNmTcQl&G+eKPz&{AJtkoGv*Av*b-AvMLJs#*WHXy6TbOnbkU+kut=byabrTO# zK|9kqq+1!hI1hrY+e43sb}~nS{_?F#FtUAR>q>d7;tOrgZ%I3YPa=DRduz`w?T>vi zQi-%}uWYT<1@q5_5BP)mL+Pux4nyB}kA747_WsxRk0Rq+==jwXH_>q*ygjrvw43?4 zGyY>|{9yH{^V(71?eeW-UfP&?FtwT4d;KRqido7rc*1TRYs0j-fC$b#`b`m$62r`4 z_D*PZZ_m25t(8q;&na&#Vv!zV);}UFxK>EDEF#t4yZg9_c*k;#qDem=({amm2;8u> z8v5QT6qibQ{RV!Mx?!EQzogqKf)G9jZO=jIPtfx#82AO8|4r&G^T%RvWA)+cqe2;- zihvU~ER=_XYC!ZztY)P3AI*2ZQHYtXP+c# ltZ>g6LS2DVL{F(n*TsK153=)fpsV`@^W(-j<0x`3^cPiyeX#%l diff --git a/cli/src/zshell/subcommands/__pycache__/wallpaper.cpython-314.pyc b/cli/src/zshell/subcommands/__pycache__/wallpaper.cpython-314.pyc index 9ec1eec0bda09c1063d03e5434b7f2c2483670dc..0d1d2f46e822b684d3a06e276122e7ce8d6b2dea 100644 GIT binary patch delta 386 zcmX>hG)b6On~#@^0SGES%CR6NHHC72{-8CY8zN ztg7ZLaSS?AFa-<@L5vnc3=HY~3=A?1VJvZsC~{07xfBPG++<#M@yQQZJs3GAYqBX$ z7GM_v@&qR5u~~pcWR${~1Go{!!dNjpFjfHH!~&7YKiR|?1t$x#i&`+7FhQi`8G=}p z88lgoK>SPwpi43fI2agiF$eg$`)P6(u>gf{vE&z|=G|f`&a9f8!mi5(WF?lRPM*l_ zps*4s-N5igf`MD0U#m-NLiA-W#Rlga+ tuple[str, str | None, str | None]: + parts = value.split(":") + if len(parts) == 1: + return parts[0], None, None + if len(parts) == 3: + return parts[0], parts[1], parts[2] + raise typer.BadParameter("Preset must be or ::") @app.command() -def set(): +def list(): + for preset_name in list_presets(): + data = load_preset_file(preset_name) + flavors = [item["id"] for item in data["variants"]["flavors"]] + accents = [item["id"] for item in data["variants"]["accents"]] + for flavor in flavors: + for accent in accents: + typer.echo(f"{preset_name}:{flavor}:{accent}") + + +@app.command() +def set( + preset: str = typer.Argument(..., help="Preset in form or ::"), + mode: str = typer.Option("dark", help="Mode for preset colors."), +): + name, flavor, accent = _split_preset(preset) + data = load_preset_file(name) + + if flavor is None or accent is None: + defaults = data["variants"]["defaults"][mode] + flavor = defaults["flavor"] + accent = defaults["accent"] + + palette = build_palette(data, flavor, accent, mode) + out = { + "name": palette.name, + "flavor": f"{palette.flavor}:{palette.accent}", + "mode": palette.mode, + "variant": name, + "colors": dict(palette.colors), + "seed": int(palette.colors["primary"].lstrip("#"), 16), + } + + OUTPUT.parent.mkdir(parents=True, exist_ok=True) + OUTPUT.write_text(json.dumps(out, indent=4), encoding="utf-8") + typer.echo(f"applied: {name}:{flavor}:{accent}") diff --git a/cli/src/zshell/utils/__pycache__/presets.cpython-314.pyc b/cli/src/zshell/utils/__pycache__/presets.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1094349edf3e5c0c22c93892896d1460c31e4920 GIT binary patch literal 4525 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 CfPu&W literal 0 HcmV?d00001 diff --git a/cli/src/zshell/utils/__pycache__/schemepalettes.cpython-313.pyc b/cli/src/zshell/utils/__pycache__/schemepalettes.cpython-313.pyc deleted file mode 100644 index 4f3c04b2c71eaf549300244b60f0c8436376b824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1388 zcmY*Z%}*Og6rcTGfASGiwvLrz&~HCZ-z)Ag=1JFb8e z5{IU})Q3{}&`LSB|4c<>se(~cRqBbJj2tP~&a90kp0vOB`@J_GJ8#}@H!U+W-P6Y=CtE3sann8{)czrIAm~VMzrUCMUoP8S9oh11z1*NG%J!VX;bIQ<-Zjdrb{pDL8yj z!3j8GB^Csnv=mFT)Pkt6MXeMZ{gnB=8~NM?-y|>4#4aMp@lg~pA+0%tIc*cw>t3+8 z!?^k!hlg(9@Znb`^-0%a0)Jrs~Fs<;@3_;--ksczc=s=2mJleS$8cN;$EY1@9;Kz=_nWZTa@91-6O+#s}V zEc4x26a_&@5b?qwV$mTU9kcC-ha4Lbg1u)A;_}=u%XQfUXvM6CHP<{uPSyO%BilH9 z;W{KT59gjCJol2Aj_;WfcFe=5>iWLfAf6wYkyCYRZoPNmD!*E4=DxrGr#y+ruO?Hu>h9ZA#V%>!!09&} z%L2gH<@eiNV{ihVGVIyoeiL75?q|SL-dC|f;R(osB@v2)cJHry3*@CODlhC;Di^#W zd8t=QowZiY_5wmB26+L0$dVDCG=&X@G|AtRgm%>-c!~x1Qj8J2h8Rz6KrgRjSpFfSW5 zYKZlshx~)E;e>vO=h@ryr*~$R9Plp-^RmVFNTrD2_;fT^D(-A=KPiQ|v9T=aSr$1=!x6@PSS)*mNvoq(J@s{4sOb_C@ xo2~tJ?#^XOHN;bp>x=^BqtnTSjwH^CN7}3L=8fhzrz6vE5;O0BD2VY}{}06FORWF^ diff --git a/cli/src/zshell/utils/__pycache__/schemepalettes.cpython-314.pyc b/cli/src/zshell/utils/__pycache__/schemepalettes.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a6c83563cfa4ad10d7b04dfa7f12aee0797edbdd GIT binary patch literal 2054 zcmaJ?-ESL35TCoV&vyKk54U!|af+fww7Dp86DSeFq)8Krg!B^nLY&j}e8s1p@7%pL zO7ehQKte(w`p}0w6seE&ze$@S)Dsm#JoU|PDCr|JXFGMJh?PA1o1MMg`OVIZ-%BO? z0LQh`zt%4zz~7{FN2~+(pCZtq0qQ^&czhf%+ zOTMM0x|*7v4!5u1F}1%GQv}{uLVs@y=Rh4i52Hgb$UG|ev9iu}!`40Tk>E=U2FJC? zl3uG>&X;S5a9!2UR@6rK`rK?N>u$Xq%OE{2GQZos6VibyQV!>YvP z8$?#Xt3!T#)ild1x@~f9E*nI(Ll;7bCH(EzP|OGoxB(mD``-bSarHD@7b=1RtHKxX zp{NQYxTk}~9xV0XP!A4wu_|AT;HRB|Cq>ADo<&~}Ge1&eR#j(Pe#|os*C`W>a+7h3 zP{c9ooawfo?f~s8omslWm;JEGn9CTE7!@&cF01O?Pik5a-?C+JP4noA;f7ySDsI(O zZo6A<)l#lm+*7tM-PGBoJ6thrOYxYYYG0KfJJdR)C#cMSaO7)A+6S%#)_&a9htZhE+kI}hV%U|ck9 zRA57RhDX`+G0UK2RJnl&Sd$f5H=vn<6K5K82jum)z_Q(4M<*Yp^--y(3hQWT4^>?6 zmH{XtCXdA8Xz@c8b5rwWX7W07FbgD)Ge)(D&JN-fI6K^S_897nL_Zl$qG-SYdN|%9 zaeuW*(}UGO3w#dT#cjbLhC!_?AZWlF*H#W4Yi}f(hxJZF08p{25-=fd^dGjPPW>Sb z!4HjZ&d(zq+V4lP{HvPfa9=`!9P+pta2N?V_;l>XDrXTi;E#Cf=b0a7 z9!NXohlPhDJ4?S#?B&Mx;>vDF3F!Fp>{M}le#)1pug(_c3cfsl`ID=2s819orYDQO zJUKO4EXjrd_$GQE z;I8s1>Nam4cs+!R!C0rL2V+vaNH5kI-F}1-6x)dqSyAU!=hjxS-<`tD#Xe$j%XM_S zTePTPS~EJ3ohL!L`+r$NkK|E|8}K{iA4C3NN)*JGfa1sO{h|A}cL(yn#fDq7@Nyc2 z;ULJ%qX|X{?Z*#0z3DMZ96yKc$;94eZ@G2DwOuxbuSmc4+sk~5{sr0|28BhJ`N- literal 0 HcmV?d00001 diff --git a/cli/src/zshell/utils/presets.py b/cli/src/zshell/utils/presets.py new file mode 100644 index 0000000..2041527 --- /dev/null +++ b/cli/src/zshell/utils/presets.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +import json +from dataclasses import dataclass +from pathlib import Path +from typing import Any + + +@dataclass(frozen=True) +class PresetPalette: + name: str + flavor: str + accent: str + mode: str + colors: dict[str, str] + + +PRESET_ROOT = Path(__file__).resolve().parent.parent / "assets" / "presets" + + +def load_preset_file(name: str) -> dict[str, Any]: + path = PRESET_ROOT / name / f"{name}.json" + if not path.exists(): + raise FileNotFoundError(path) + return json.loads(path.read_text(encoding="utf-8")) + + +def build_palette(data: dict[str, Any], flavor: str, accent: str, mode: str) -> PresetPalette: + flavor_entry = next(item for item in data["variants"]["flavors"] if item["id"] == flavor) + accent_entry = next(item for item in data["variants"]["accents"] if item["id"] == accent) + flavor_block = flavor_entry.get(mode, {}) + accent_block = accent_entry.get(flavor, {}) + + colors = { + "primary": accent_block.get("primary", "#000000"), + "secondary": accent_block.get("secondary", accent_block.get("primary", "#000000")), + "tertiary": accent_block.get("primaryContainer", accent_block.get("surfaceTint", accent_block.get("primary", "#000000"))), + "neutral": flavor_block.get("background", "#000000"), + "neutral_variant": flavor_block.get("surfaceVariant", flavor_block.get("outline", flavor_block.get("background", "#000000"))), + } + + return PresetPalette( + name=data.get("name", "preset"), + flavor=flavor, + accent=accent, + mode=mode, + colors=colors, + ) + + +def list_presets() -> list[str]: + out: list[str] = [] + if not PRESET_ROOT.exists(): + return out + + for preset_dir in sorted(p for p in PRESET_ROOT.iterdir() if p.is_dir()): + json_path = preset_dir / f"{preset_dir.name}.json" + if json_path.exists(): + out.append(preset_dir.name) + + return out