# adam2 prompt theme prompt_adam2_help () { cat <<'EOF' This prompt is color-scheme-able. You can invoke it thus: prompt adam2 [ plain ] [ [ []]] where the colors are for the hyphens, current directory, and user@host bits respectively. The default colors are cyan, green, and cyan. This theme works best with a dark background. Recommended fonts for this theme: nexus or vga or similar. If you don't have any of these, then specify the `plain' option to use 7-bit replacements for the 8-bit characters. And you probably thought adam1 was overkill. EOF } prompt_adam2_setup () { # Some can't be local local prompt_gfx_tlc prompt_gfx_mlc prompt_gfx_blc prompt_gfx_bbox if [[ $1 == 'plain' ]]; then shift prompt_gfx_tlc='.' prompt_gfx_mlc='|' prompt_gfx_blc='\`' prompt_gfx_hyphen='-' else prompt_gfx_tlc=$'\xda' prompt_gfx_mlc=$'\xc3' prompt_gfx_blc=$'\xc0' prompt_gfx_hyphen=$'\xc4' fi # Colour scheme prompt_adam2_color1=${1:-'cyan'} # hyphens prompt_adam2_color2=${2:-'green'} # current directory prompt_adam2_color3=${3:-'cyan'} # user@host prompt_gfx_tbox="%{$fg_bold[$prompt_adam2_color1]%}${prompt_gfx_tlc}%{$fg_no_bold[$prompt_adam2_color1]%}${prompt_gfx_hyphen}" prompt_gfx_bbox="%{$fg_bold[$prompt_adam2_color1]%}${prompt_gfx_blc}${prompt_gfx_hyphen}%{$fg_no_bold[$prompt_adam2_color1]%}" # This is a cute hack. Well I like it, anyway. prompt_gfx_bbox_to_mbox=$(print -n "%{\e[A\r$fg_bold[$prompt_adam2_color1]${prompt_gfx_mlc}$fg_no_bold[$prompt_adam2_color1]${prompt_gfx_hyphen}\e[B%}") prompt_l_paren="%{$fg_bold[grey]%}(" prompt_r_paren="%{$fg_bold[grey]%})" prompt_machine="%{$fg_no_bold[$prompt_adam2_color3]%}%n%{$fg_bold[$prompt_adam2_color3]%}@%{$fg_no_bold[$prompt_adam2_color3]%}%m" prompt_padding_text=`perl -e "print qq{${prompt_gfx_hyphen}} x 200"` prompt_line_1a="$prompt_gfx_tbox$prompt_l_paren%{$fg_bold[$prompt_adam2_color2]%}%~$prompt_r_paren%{$fg_no_bold[$prompt_adam2_color1]%}" prompt_line_1a_no_color=$(echo "$prompt_line_1a" | perl -pe 's/%{.*?%}//g') prompt_line_1b="$prompt_l_paren$prompt_machine$prompt_r_paren%{$fg_no_bold[$prompt_adam2_color1]%}${prompt_gfx_hyphen}" prompt_line_1b_no_color=$(echo "$prompt_line_1b" | perl -pe 's/%{.*?%}//g') prompt_line_2="$prompt_gfx_bbox${prompt_gfx_hyphen}%{$fg_bold[white]%}" prompt_char="%(!.#.>)" precmd () { prompt_adam2_precmd; setopt promptsubst } preexec () { prompt_adam2_preexec } } prompt_adam2_precmd () { setopt noxtrace localoptions local prompt_line_1a_no_color_expanded prompt_line_2a_no_color_expanded local prompt_padding_size prompt_padding prompt_line_1 pre_prompt local prompt_pwd_size prompt_line_1a_no_color_expanded=$(print -P "$prompt_line_1a_no_color") prompt_line_1b_no_color_expanded=$(print -P "$prompt_line_1b_no_color") prompt_padding_size=$(( $COLUMNS - $#prompt_line_1a_no_color_expanded - $#prompt_line_1b_no_color_expanded )) if [[ $prompt_padding_size -ge 0 ]]; then prompt_padding=$(printf "%$prompt_padding_size.${prompt_padding_size}s" "$prompt_padding_text") prompt_line_1="$prompt_line_1a$prompt_padding$prompt_line_1b" else prompt_padding_size=$(( $COLUMNS - $#prompt_line_1a_no_color_expanded )) if [[ $prompt_padding_size -ge 0 ]]; then prompt_padding=$(printf "%$prompt_padding_size.${prompt_padding_size}s" "$prompt_padding_text") prompt_line_1="$prompt_line_1a$prompt_padding" else prompt_pwd_size=$(( $COLUMNS - 5 )) prompt_line_1="$prompt_gfx_tbox$prompt_l_paren%{$fg_bold[$prompt_adam2_color2]%}%$prompt_pwd_size<...<%~%<<$prompt_r_paren%{$fg_no_bold[$prompt_adam2_color1]$prompt_gfx_hyphen%}" fi fi pre_prompt="$prompt_line_1$prompt_newline$prompt_line_2" PS1="$pre_prompt%{$fg_bold[white]%}$prompt_char " PS2="$prompt_line_2%{$prompt_gfx_bbox_to_mbox$fg_bold[white]%}%_> " PS3="$prompt_line_2%{$prompt_gfx_bbox_to_mbox$fg_bold[white]%}?# " } prompt_adam2_preexec () { print -n "$fg_no_bold[white]" } prompt_adam2_setup "$@"