It would be great if you could customize themes with data stored as URL parameters. Similar to how Cloudinary/Imgix do their image transforms with an image API, themes could have a Theme API where everything gets added to the URL.
Customized URLs might look something like this:
https://showmy.chat/c/TrostCodes?theme=frontend-horse&text-color=03ae92&bg-color=03ae92&mod-bg-color=03fa20&font-size=16&font-family=Roboto
These could be defined per-theme with a JSON object, providing labels, types (color, text, select, integer), etc.
Then in an interface, you'd be able to customize the different properties. Here's a quick mockup of how I see this potentially looking:
If you paste an old URL in, the values would load and you'd be able to easily customize once again.
We'd need to decide if some themes just have small customization options, or arent' customizable at all. Or if there are standard values across all themes, like font-family
or text-color
. I worry that would limit the potential creativity of future themes, so letting each theme create its own properties feels like the most flexible way, if not a tad chaotic.
This would also address #2
Caveat
This idea assumes demand for people to deeply customize their themes.
It might be better for the time being to focus on building out more theme styles that people like, rather than putting the onus on users to create a style they like through this method.
@BenDMyers did mention that you could get around this URL encoding bit by adding custom styles in OBS which is a great workaround.