I really wanted to ability maintain a small set of themes I like and randomize through them. It could be as easy as removing those themes that I don't like, but then you'd might have to be careful when merging changes and collaborating, etc.
Instead, I thought just creating a simple shell function to make a symlink in another directory would be an easy way to keep track of 'liked' themes. This way there isn't really any overhead because the themes aren't be copied, and removing favorites or 'unliking' themes is as easy as remove the symlink.
Goes along with Issue #397
Initial support for favorite themes
Add ability to switch between 'random' themes and 'favorite' themes
- Refactored code for getting a random theme into a function
- Setting your theme to 'favorites' will now pick a random theme from your
favorites and setting theme to 'random' will pick a random theme from ALL
Add function to list favorite themes
Default themes argument
- This allows the function to be used from the shell as a shortcut to sourcing
~/.zshrc to load a new random theme
- Refactor out list of all available themes
Refactor loading of theme into function for reusability
- Make sure to load a new theme after user 'unlikes' a theme
Add favorites directory to ignore
Add a bit of documentation for favorite themes, etc.
Export favorite themes directory in template
Instead of just ignoring this maybe the framework could collect data on everyone's favorite themes when pushing/pulling and publicize this on the web somewhere. Too pie in the sky?
I really love the 'random' theme feature. However, as the number of themes grow I'm more inclined to want to randomize through a subset of themes I really enjoy.
For example, while using 'random' I might come across several themes I really like. It would be useful to 'like' these themes so I can remember them later if I want to switch to one exclusively. Also, I might find that I really enjoy a small percentage of the available themes and want to stick to those.
It needs to be really simple to 'like' a theme. So a simple shell function to like your current theme should suffice. Then you can set your theme name to 'favorites' and only randomize through those. You should also be able to 'unlike' a theme in a similar fashion.
Another neat feature (probably way down the road) would be to collect which favorites users have when updating and/or pulling/pushing changes. This could open up the community around themes a bit more and give newcomers an idea of which themes are popular and most likely useful.
[Fix #398] Manually set locale
@durden Thanks for the ideas here. I'm not too interested in working on a community data collection process here... so going to close this for now.