Colorscheme options with the option to select flavor and accent #73

Closed
opened 2026-04-25 02:51:15 +02:00 by AramJonghu · 5 comments
Collaborator

For schemes like catppuccin, there are multiple flavors and many accents. For other themes, similar options are available. Make the scheme options more dynamic so more options are available. This could be with or without materialyou (personally not a fan afaik).

  • Update schemepalettes.py to be dynamically applicable.
  • Update/add multiple colorschemes colors in txt or json (currently only interested in Catppuccin and Gruvbox).
For schemes like catppuccin, there are multiple flavors and many accents. For other themes, similar options are available. Make the scheme options more dynamic so more options are available. This could be with or without materialyou (personally not a fan afaik). - [x] Update schemepalettes.py to be dynamically applicable. - [x] Update/add multiple colorschemes colors in txt or json (currently only interested in Catppuccin and Gruvbox).
AramJonghu added the enhancement label 2026-04-25 02:51:15 +02:00
AramJonghu self-assigned this 2026-04-25 02:51:15 +02:00
AramJonghu added this to the Zshell board project 2026-04-25 02:51:15 +02:00
AramJonghu moved this to In Progress in Zshell board on 2026-04-25 02:51:36 +02:00
AramJonghu added reference 73-colorscheme-options 2026-04-25 02:52:20 +02:00
Author
Collaborator

Hey @zach

A number of changes were made in two commits:
Commit 1
Commit 2

In short:

  • schemepalletes.py adjusted to scan assets/schemes/ directory for all .txt palettes.
  • Adjusted catppuccin colors in each txt and separated accents taken from catppuccins dankmaterialyou implementation.
  • Update scheme.py CLI: load .txt directly for presets, add list-presets, support --preset :[:]
  • Added option to restart in shell.py.
  • Added tests to test shell.py and presets in schemepalettes.

My request would be to implement these in settingswindow. My concerns currently are:

  • When automatic scheme mode is disabled, it still has the option to change scheme mode and scheme type. This can cause issues since that affects the preset color scheme. These options could be hidden when automatic scheme mode is disabled, optionally revealing the palette options instead.
  • With the above, I am not sure hiding palette in the first place is the right approach. Maybe a different implementation like a toggle between automatic vs palette is better?

We can discuss these options. The implementation technically works fine by just running the zshell-cli command using --preset, but a settingswindow implementation would be a nice addition.

Hey @zach A number of changes were made in two commits: [Commit 1](https://git.zach-dev.cc/zach/z-bar-qt/commit/67ae693d0cd70966f9344f47d87f47e14c70bd71) [Commit 2](https://git.zach-dev.cc/zach/z-bar-qt/commit/5f92b6f6de26d6ceb0c9023245439d4f654e07d5) In short: - `schemepalletes.py` adjusted to scan assets/schemes/ directory for all .txt palettes. - Adjusted catppuccin colors in each txt and separated accents taken from catppuccins dankmaterialyou implementation. - Update scheme.py CLI: load .txt directly for presets, add list-presets, support --preset <scheme>:<variant>[:<accent>] - Added option to restart in `shell.py`. - Added tests to test `shell.py` and presets in `schemepalettes`. My request would be to implement these in settingswindow. My concerns currently are: - When `automatic scheme mode` is disabled, it still has the option to change `scheme mode` and `scheme type`. This can cause issues since that affects the preset color scheme. These options could be hidden when `automatic scheme mode` is disabled, optionally revealing the palette options instead. - With the above, I am not sure hiding palette in the first place is the right approach. Maybe a different implementation like a toggle between automatic vs palette is better? We can discuss these options. The implementation technically works fine by just running the `zshell-cli` command using `--preset`, but a settingswindow implementation would be a nice addition.
AramJonghu moved this to Review in Zshell board on 2026-05-22 23:43:39 +02:00
AramJonghu moved this to In Progress in Zshell board on 2026-05-22 23:43:41 +02:00
Owner

Yeah I've been working on the UI in settings for this today. I needed to make a bunch of changes to hide/reveal options based on the value of other options, so it's taking me a while to do it. What's taking the longest is properly displaying the available options for each scheme.

My idea is to use the same object list box as fonts do, letting the user search for the color schemes they want to apply, as well as the variant and optionally accent, where the accent section will appear/disappear as needed if selected variant has accent colors. The attached image is just to give you an idea of what I mean, the implementation is obviously not complete yet.

image.png

The main hurdle right now is just parsing the output of zshell-cli scheme list-presets. So, my request to you is to structure the output in a more manageable way, possibly with additional flags like zshell-cli scheme list-presets --json for json formatting. Eg. output:

{
    "presets": {
        "Catppuccin": {
            "variants": {
                "frappe": {
                    "accents": [
                        "blue",
                        "red",
                        etc...
                    ]
                },
                "latte": {
                ...
                },
                ...
            }
        }
    }
}
Yeah I've been working on the UI in settings for this today. I needed to make a bunch of changes to hide/reveal options based on the value of other options, so it's taking me a while to do it. What's taking the longest is properly displaying the available options for each scheme. My idea is to use the same object list box as fonts do, letting the user search for the color schemes they want to apply, as well as the variant and optionally accent, where the accent section will appear/disappear as needed if selected variant has accent colors. The attached image is just to give you an idea of what I mean, the implementation is obviously not complete yet. ![image.png](/attachments/97b33e30-eccf-4637-8afa-8bada686ce84) The main hurdle right now is just parsing the output of `zshell-cli scheme list-presets`. So, my request to you is to structure the output in a more manageable way, possibly with additional flags like `zshell-cli scheme list-presets --json` for json formatting. Eg. output: ``` { "presets": { "Catppuccin": { "variants": { "frappe": { "accents": [ "blue", "red", etc... ] }, "latte": { ... }, ... } } } }
1.6 MiB
Author
Collaborator

I think adding logic for accents is a fine idea. Though is catppuccin not the only one using accents?

IMO, it might be better to just have the accents included in the presets. It does kinda look ugly as there are a bunch of catppuccin-macchiato-<accent> options, but that does simplify things. What do you prefer?

I think adding logic for accents is a fine idea. Though is catppuccin not the only one using accents? IMO, it might be better to just have the accents included in the presets. It does kinda look ugly as there are a bunch of `catppuccin-macchiato-<accent>` options, but that does simplify things. What do you prefer?
zach was assigned by AramJonghu 2026-05-23 16:35:48 +02:00
Owner

I think I'd prefer separating them, mainly because then we have robust handling for presets/variants/accents should we add more color schemes in the future that also use both variants and accents. And as long as the output of the list-presets command is easily parsed (preferably it just outputs json as said in my previous comment) then this is a pretty simple task to do on the QML side

I think I'd prefer separating them, mainly because then we have robust handling for presets/variants/accents should we add more color schemes in the future that also use both variants and accents. And as long as the output of the `list-presets` command is easily parsed (preferably it just outputs json as said in my previous comment) then this is a pretty simple task to do on the QML side
Author
Collaborator

Should work now. I did revert to --accent syntax. Would make more sense. Catppuccin flavors default to blue if not specified via cli.

Should work now. I did revert to `--accent` syntax. Would make more sense. Catppuccin flavors default to blue if not specified via cli.
AramJonghu moved this to Review in Zshell board on 2026-05-23 18:46:52 +02:00
zach closed this issue 2026-05-24 18:52:08 +02:00
AramJonghu moved this to Done in Zshell board on 2026-05-24 18:52:10 +02:00
Sign in to join this conversation.