Add ability to 'like' and 'unlike' themes and maintain list of favorite themes #398

wants to merge 8 commits into


None yet

2 participants


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

durden added some commits Jun 4, 2011
@durden durden Initial support for favorite themes a3c24f6
@durden durden 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
    available themes
@durden durden Add function to list favorite themes cfd683a
@durden durden 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
@durden durden Refactor loading of theme into function for reusability
- Make sure to load a new theme after user 'unlikes' a theme
@durden durden Add favorites directory to ignore 1ccb297
@durden durden Add a bit of documentation for favorite themes, etc. 7bf55f2
@durden durden Export favorite themes directory in template 2e203cb

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.

@vguerci vguerci pushed a commit to vguerci/oh-my-zsh that referenced this pull request Mar 14, 2013
@sorin-ionescu sorin-ionescu [Fix #398] Manually set locale 6e65349

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment