diff --git a/README.md b/README.md index 54107b1c..fd4a0abc 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,14 @@ If you're feeling feisty, you can let the computer select one randomly for you e ZSH_THEME="random" # (...please let it be pie... please be some pie..) ``` +And if you want to pick random theme from a list of your favorite themes: + +```shell +ZSH_THEM_RANDOM_CANDIDATES=( + "robbyrussell" + "agnoster" +) +``` ## Advanced Topics diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index a7de646f..7f78e414 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -93,8 +93,12 @@ done unset config_file # Load the theme -if [ "$ZSH_THEME" = "random" ]; then - themes=($ZSH/themes/*zsh-theme) +if [[ "$ZSH_THEME" == "random" ]]; then + if [[ "${(t)ZSH_THEME_RANDOM_CANDIDATES}" = "array" ]] && [[ "${#ZSH_THEME_RANDOM_CANDIDATES[@]}" -gt 0 ]]; then + themes=($ZSH/themes/${^ZSH_THEME_RANDOM_CANDIDATES}.zsh-theme) + else + themes=($ZSH/themes/*zsh-theme) + fi N=${#themes[@]} ((N=(RANDOM%N)+1)) RANDOM_THEME=${themes[$N]} diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template index af42e5b9..966d7a97 100644 --- a/templates/zshrc.zsh-template +++ b/templates/zshrc.zsh-template @@ -9,6 +9,13 @@ export ZSH=$HOME/.oh-my-zsh # See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes ZSH_THEME="robbyrussell" +# Set list of themes to load +# Setting this variable when ZSH_THEME=random +# cause zsh load theme from this variable instead of +# looking in ~/.oh-my-zsh/themes/ +# An empty array have no effect +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) + # Uncomment the following line to use case-sensitive completion. # CASE_SENSITIVE="true"