random.zsh-theme 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. # Make themes a unique array
  2. typeset -Ua themes
  3. if [[ "${(t)ZSH_THEME_RANDOM_CANDIDATES}" = array && ${#ZSH_THEME_RANDOM_CANDIDATES[@]} -gt 0 ]]; then
  4. # Use ZSH_THEME_RANDOM_CANDIDATES if properly defined
  5. themes=($ZSH_THEME_RANDOM_CANDIDATES)
  6. else
  7. # Look for themes in $ZSH_CUSTOM and $ZSH and add only the theme name (:t)
  8. themes=(
  9. "$ZSH_CUSTOM"/*.zsh-theme(N:t:r)
  10. "$ZSH_CUSTOM"/themes/*.zsh-theme(N:t:r)
  11. "$ZSH"/themes/*.zsh-theme(N:t:r)
  12. )
  13. fi
  14. # Choose a theme out of the pool of candidates
  15. N=${#themes[@]}
  16. (( N = (RANDOM%N) + 1 ))
  17. RANDOM_THEME="${themes[$N]}"
  18. unset N themes
  19. # Source theme
  20. if [[ -f "$ZSH_CUSTOM/$RANDOM_THEME.zsh-theme" ]]; then
  21. source "$ZSH_CUSTOM/$RANDOM_THEME.zsh-theme"
  22. elif [[ -f "$ZSH_CUSTOM/themes/$RANDOM_THEME.zsh-theme" ]]; then
  23. source "$ZSH_CUSTOM/themes/$RANDOM_THEME.zsh-theme"
  24. elif [[ -f "$ZSH/themes/$RANDOM_THEME.zsh-theme" ]]; then
  25. source "$ZSH/themes/$RANDOM_THEME.zsh-theme"
  26. else
  27. echo "[oh-my-zsh] Random theme '${RANDOM_THEME}' not found"
  28. return 1
  29. fi
  30. echo "[oh-my-zsh] Random theme '${RANDOM_THEME}' loaded"