tools/theme_chooser.sh
cbf66274
 #!/bin/zsh
fea4e54b
 
 # Zsh Theme Chooser by fox (fox91 at anche dot no)
 # This program is free software. It comes without any warranty, to
 # the extent permitted by applicable law. You can redistribute it
 # and/or modify it under the terms of the Do What The Fuck You Want
 # To Public License, Version 2, as published by Sam Hocevar. See
 # http://sam.zoy.org/wtfpl/COPYING for more details.
 
 THEMES_DIR="$ZSH/themes"
5d5d2f94
 FAVLIST="${HOME}/.zsh_favlist"
cbf66274
 source $ZSH/oh-my-zsh.sh
fea4e54b
 
 function noyes() {
cbf66274
     read "a?$1 [y/N] "
fea4e54b
     if [[ $a == "N" || $a == "n" || $a = "" ]]; then
         return 0
     fi
     return 1
 }
 
 function theme_preview() {
     THEME=$1
cbf66274
     THEME_NAME=`echo $THEME | sed s/\.zsh-theme$//`
     print "$fg[blue]${(l.((${COLUMNS}-${#THEME_NAME}-5))..─.)}$reset_color $THEME_NAME $fg[blue]───$reset_color"
     source "$THEMES_DIR/$THEME"
     print -P $PROMPT
 }
fea4e54b
 
cbf66274
 function banner() {
fea4e54b
     echo
cbf66274
     echo "╺━┓┏━┓╻ ╻   ╺┳╸╻ ╻┏━╸┏┳┓┏━╸   ┏━╸╻ ╻┏━┓┏━┓┏━┓┏━╸┏━┓"
     echo "┏━┛┗━┓┣━┫    ┃ ┣━┫┣╸ ┃┃┃┣╸    ┃  ┣━┫┃ ┃┃ ┃┗━┓┣╸ ┣┳┛"
     echo "┗━╸┗━┛╹ ╹    ╹ ╹ ╹┗━╸╹ ╹┗━╸   ┗━╸╹ ╹┗━┛┗━┛┗━┛┗━╸╹┗╸"
fea4e54b
     echo
 }
 
cbf66274
 function usage() {
     echo "Usage: $0 [options] [theme]"
     echo
     echo "Options"
     echo "  -l   List available themes"
     echo "  -s   Show all themes"
     echo "  -h   Get this help message"
     exit 1
 }
 
 function list_themes() {
     for THEME in $(ls $THEMES_DIR); do
         THEME_NAME=`echo $THEME | sed s/\.zsh-theme$//`
         echo $THEME_NAME
     done
 }
 
 function insert_favlist() {
     if grep -q "$THEME_NAME" $FAVLIST 2> /dev/null ; then
         echo "Already in favlist"
     else
         echo $THEME_NAME >> $FAVLIST
         echo "Saved to favlist"
     fi
 
 }
fea4e54b
 
cbf66274
 function theme_chooser() {
     for THEME in $(ls $THEMES_DIR); do
         echo
         theme_preview $THEME
         echo
         if [[ -z $1 ]]; then
             noyes "Do you want to add it to your favourite list ($FAVLIST)?" || \
                   insert_favlist $THEME_NAME
             echo
         fi
     done
 }
 
 while getopts ":lhs" Option
 do
   case $Option in
     l ) list_themes ;;
     s ) theme_chooser 0 ;;
     h ) usage ;;
     * ) usage ;; # Default.
   esac
fea4e54b
 done
cbf66274
 
 if [[ -z $Option ]]; then
     if [[ -z $1 ]]; then
         banner
         echo
         theme_chooser
     else
         theme_preview $1".zsh-theme"
     fi
 fi