# Creado por: Oscar Carballal (pizte)
# Fecha: 16/09/2004
# Version 0.1
# 
# La fuente recomendada para ver correctamente el prompt es Monoespace 12 puntos
# El terminal DEBE ser xterm, bash, consola pura o alguna variante de xterm, en caso contrario no funcionara correctamente
# 
# Funciones:
# Muestra la carga de la CPU cambiando el color del hostname
# Cuando el prompt esta listo para recibir ordenes muestra arriba a la derecha el mensaje "Master, I'm ready to serve"
# El resto es lo habitual en un prompt, muestra la tty, hora, fecha, usuario, hostname, directorio y usuarios conectados
#
# Este prompt ha sido modificado a partir de uno que aparece en el bash_como.pdf, agradezco a R|a (DaRkneSS)
# que me haya animado a hacer esto (aunque el no lo sepa) y por supuesto, las sugerencias son bienvenidas :)
# pizte@cyberspace.org

# Colores para ls, etc.
eval `dircolors -b /etc/DIR_COLORS`
alias d="ls --color"
alias ls="ls --color=auto"
alias ll="ls --color -l"

# Variables para la carga de sistema
TRESHOLD_LOAD=200
COLOUR_LOW='1;34'
COLOUR_HIGH='1;31'
# Colores para el prompt
GRIS="\[\033[1;30m\]"
GRIS_CLARO="\[\033[0;37m\]"
BLANCO="\[\033[1;37m\]"
SIN_COLOR="\[\033[0m\]"
# Mucha gente tiene objeciones acerca del parpadeo de texto, de forma que si quereis quitarlo
# podeis quitar el 5; al color rojo, de forma que quedaria ROJO="\[\033[1;31m\]", asi no parpadeara
ROJO="\[\033[5;1;31m\]"
AMARILLO="\[\033[1;33m\]"
VERDE_LIGHT="\[\033[0;36m\]"
VERDE_HIGH="\[\033[01;32m\]"
GRIS_LIGHT="\[\033[00m\]"
GRIS_HIGH="\[\033[0;37m\]"
AZUL="\[\033[1;34m\]"
CYAN="\[\033[1;36m\]"

# Variables para el TTY, usuarios y mensaje
USERS=$(uptime | sed -e 's/.*up //' | cut -d " " -f 3)
TTY=$(tty | cut -d/ -f3-4)
TEXTO="Master"
TEXTO1=", I'm ready to serve"

# Funcion principal
function prompt_command {

ONE=$(uptime | sed -e 's/.*load average: \(.*\...\), \(.*\...\), \(.*\...\)/\1/' -e 's/ //g')

ONEHUNDRED=$(echo -e "scale=0 \n $ONE/0.01 \nquit \n" | bc)

if [ $ONEHUNDRED -gt $TRESHOLD_LOAD ]
then
    HOST_COLOUR=$COLOUR_HIGH
else
    HOST_COLOUR=$COLOUR_LOW
fi
let prompt_x=$COLUMNS-26
}

PROMPT_COMMAND=prompt_command

PS1="\033[s\033[2;\${prompt_x}H\]$ROJO\$TEXTO$GRIS\$TEXTO1\033[u\033[1A\]\n$CYAN($GRIS\$(date +%H:%M)$CYAN|$GRIS\$(date +%e/%m/%g)$CYAN)$GRIS-$CYAN($BLANCO\u$GRIS@$GRIS_HIGH\033[\$(echo -n \$HOST_COLOUR)m\]\h\[\033[0;37m\]$CYAN)\n$CYAN($GRIS\$USERS$CYAN|$GRIS\$TTY$CYAN)$GRIS-$CYAN($GRIS\w$CYAN)$GRIS:$SIN_COLOR "

# Solucion a un pequeo fallo, cuando inicia muestra la cadena de texto y el set de columnas (26H Master Im ready....)
echo `clear`