diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 3c0f4f8f5..3d73cf0ff 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -69,10 +69,19 @@ unset config_file # Load the theme if [ "$ZSH_THEME" = "random" ]; then - themes=($ZSH/themes/*zsh-theme) + if [ -f "$THEMES_FILE" ]; then + echo "[oh-my-zsh] Found custom theme file $THEMES_FILE" + themes=($(<$THEMES_FILE)) + else + themes=($ZSH/themes/*zsh-theme) + fi N=${#themes[@]} ((N=(RANDOM%N)+1)) RANDOM_THEME=${themes[$N]} + if [ -f "$THEMES_FILE" ]; then + RANDOM_THEME="$ZSH/themes/$RANDOM_THEME" + alias oh-my-zsh-theme-remove="echo 'Removing theme ${themes[$N]}' ; sed -i.old '/$(basename ${themes[$N]})/d' $THEMES_FILE" + fi source "$RANDOM_THEME" echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..." else diff --git a/plugins/themes/themes.plugin.zsh b/plugins/themes/themes.plugin.zsh index 7519b0253..506d1b6b8 100644 --- a/plugins/themes/themes.plugin.zsh +++ b/plugins/themes/themes.plugin.zsh @@ -1,10 +1,19 @@ function theme { if [ -z "$1" ] || [ "$1" = "random" ]; then - themes=($ZSH/themes/*zsh-theme) + if [ -f "$THEMES_FILE" ]; then + echo "[oh-my-zsh] Found custom theme file $THEMES_FILE" + themes=($(<$THEMES_FILE)) + alias oh-my-zsh-theme-remove='echo "Removing theme ${themes[$N]}" ; sed -i.old "/$(basename ${themes[$N]})/d" $THEMES_FILE' + else + themes=($ZSH/themes/*zsh-theme) + fi N=${#themes[@]} ((N=(RANDOM%N)+1)) RANDOM_THEME=${themes[$N]} + if [ -f "$THEMES_FILE" ]; then + RANDOM_THEME="$ZSH/themes/$RANDOM_THEME" + fi source "$RANDOM_THEME" echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..." else diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template index 5b2a6cf49..f0efd25ad 100644 --- a/templates/zshrc.zsh-template +++ b/templates/zshrc.zsh-template @@ -5,6 +5,11 @@ export ZSH=$HOME/.oh-my-zsh # Look in ~/.oh-my-zsh/themes/ # Optionally, if you set this to "random", it'll load a random theme each # time that oh-my-zsh is loaded. +# You may specify THEMES_FILE in case you want an specific set of themes +# with it, oh-my-zsh-theme-remove will ease erasing the current theme +# from the THEMES_FILE. +# ls $ZSH/themes/*.zsh-theme | xargs -n1 basename > $THEMES_FILE +# THEMES_FILE="$HOME/.omz-themes" ZSH_THEME="robbyrussell" # Example aliases