darkvoid-theme / darkvoid.nvim

Neovim Colorscheme for dark dwellers with optional glow effect!
MIT License
144 stars 9 forks source link

feat: Color variant presets #14

Open ficcdaf opened 2 weeks ago

ficcdaf commented 2 weeks ago

Note: This is not really a "feature request" since I am going to implement this feature myself. This issue is here for reference, and to start a discussion on how this initial idea may be further refined.

TL;DR

The user should be able to pass something like variant = "red" to the config function, which will cause a preset color scheme to be loaded instead of the default, with different colors replacing the greens and blues but otherwise retaining the monochrome colors.

I am also going to start implementing this when I have some time. It will probably take me some time to finish since I'm very busy right now, so do let me know if you have any suggestions or ideas on how to improve this feature.

Motivation

I'll start by saying for me, the big draw of this theme is that it's mostly monochrome, with very careful use of colors (by default shades of green and blue) to make parts of your code pop while otherwise retaining that monochromatic simplicity.

However, personally I'm just not that much of a green enjoyer, and so I was thinking of changing my own config to change those greens and blues to basically some more muted red/burgundy shades. Basically, keeping the feel and vision of the theme.

This gave me an idea, which is something that kanagawa.nvim does, which is having some preset "variants" the user can pick from and set in the configuration easily, without needing to tinker and pick all of their own colors.

Basically, if someone likes the vibes of darkvoid but doesn't really like the green and blue, they could very easily set it up with some other colors instead without needing to spend time picking out their own colors. I think providing as many of these kind of nice options out of the box goes a long way in having this theme appeal to more people; people don't always want to tinker too much when they set up a new theme.

Feature Idea

I propose that the config table have an optional parameter, variant, of type string. If it's not provided or nil, then the default colors should be used.

However, there could be some preset variants, like for example, "default" (current default), "red", "blue", "yellow", "orange", etc. Of course they don't need to be named after those colors, maybe they could have some interesting names and contain multiple colours, like how default has green and blue.

All of these variants would just be a very similar color palette to the default, retaining the monochromatic values, but the greens and blues would instead be other colors; of course, since they're presets, they will be colors that go nicely together and fit the vision and vibe of darkvoid as a whole.

Of course, it should be an optional value as not to break existing configs, so if variant is nil or "", then the config should behave as before and load the default colors. Furthermore, if the user specifies a variant, and then also specifies some of their own specific colors, the variant should first be applied and then any other colors the user has specified should override the variant. This way, say a user sets the red variant, but they want to change the color of only strings or comments. They should be able to do this easily in the configuration function.

Let me know what you think! I think this feature would go a long way in making the theme more accessible to new users by giving more color options that retain the monochromatic vision.

Aliqyan-21 commented 2 weeks ago

You know I was thinking about something like this from quite a while, I was thinking like current theme is default right and similiarly we can make more themes like how there is catpuccin mocha, latte, etc just like that.

My idea

This is a monochromatic theme, the only colors are from the operators, cursor, search_highlight, bool and constants right that gives that "darkvoid glow feel from alien creatures".

So, I thought why not make it different shades in different themes for example:

Implementation thought

If you notice the operator color and search_highlight colors is same - and I choose the most glowy shade of default color. (so for green i choose -> #1bfd9c)

similiarly for blue we can choose -> #8cf8f7

just it should be the most glowy shade of the base color we are applying for our theme. And then we can change for the other highlights which have color accordingly hand picked colors for each theme variant.

We can work on it and makes themes like this that vimmers can set according to their choice.

There can be a config option just like you said in config called theme and users can set theme = "darkvoid-ocean" like this for the particular theme. And default will be -> theme = "darkvoid" (no need to set it, it will be set by default).