You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.9 KiB
107 lines
2.9 KiB
#!/bin/bash
|
|
|
|
|
|
arrchar=('\u25B2' '\u25B6' '\u25BC' '\u25C0')
|
|
arrfg=( 31 32 33 34 35 36 90 97 )
|
|
arrbg=( 41 42 43 44 45 46 100 107 )
|
|
|
|
function getChar {
|
|
char=$(( n % 4 )) && n=$(( n / 4 ))
|
|
colfg=$(( n % 8 )) && n=$(( n / 8 ))
|
|
colbg=$(( n % 8 ))
|
|
[[ "$1" -eq 1 && ( "$char" -eq 1 || "$char" -eq 3 ) ]] && char=$(( (char + 2) % 4 )) # mirror horizontal arrows
|
|
echo -en "\e[1;${arrfg[$colfg]};${arrbg[$colbg]}m${arrchar[$char]}"
|
|
}
|
|
|
|
function hashColor {
|
|
n=$(md5sum <<< "$1") # get hash
|
|
n=$((0x${n%% *})) # convert to decimal
|
|
n=$(echo "$n" | tr -d - ) # get absolute value
|
|
count="$2"
|
|
i=0
|
|
echo -en '\e[1;97m'
|
|
while [ "$i" -lt "$count" ]; do
|
|
i=$(( i+1 ))
|
|
charstep[$i]=$n
|
|
getChar 0
|
|
done
|
|
while [ "$i" -gt 0 ]; do
|
|
n="${charstep[$i]}"
|
|
getChar 1
|
|
i=$(( i-1 ))
|
|
done
|
|
echo -en '\e[0m'
|
|
echo -e '\e[1;97m'
|
|
}
|
|
|
|
CH=$(hashColor "$(hostname)" 4)
|
|
|
|
temp="$(tty)"
|
|
# Chop off the first five chars of tty (ie /dev/):
|
|
cur_tty="${temp:5}"
|
|
unset temp
|
|
|
|
PR_HBAR="─"
|
|
PR_ULCORNER="┌"
|
|
PR_LLCORNER="└"
|
|
#PR_HBAR="━"
|
|
#PR_ULCORNER="┏"
|
|
#PR_LLCORNER="┗"
|
|
#PR_HBAR="═"
|
|
#PR_ULCORNER="╔"
|
|
#PR_LLCORNER="╚"
|
|
|
|
GREEN='\033[00;92m'
|
|
GREENB='\033[00;92;1m'
|
|
BLUE='\033[00;36;1m'
|
|
MAGENTA='\033[00;35;1m'
|
|
GREY='\033[00;90m'
|
|
YELLOW='\033[00;93m'
|
|
YELLOWB='\033[00;93;1m'
|
|
RED='\033[00;31m'
|
|
REDB='\033[00;31;1m'
|
|
WHITE='\033[00;97;1m'
|
|
WHITEB='\033[00;97;1m'
|
|
RST='\033[0m'
|
|
BOLD='\033[1m'
|
|
BORDCOL='\033[00;90;1m'
|
|
BGPROCCOL=$GREEN
|
|
USERCOL=$MAGENTA
|
|
export PROMPT_COMMAND=__prompt_command
|
|
|
|
function __prompt_command() {
|
|
local EXIT="$?"
|
|
PS1=""
|
|
RCOL=""
|
|
if [[ $EXIT != 0 ]]; then
|
|
RCOL="$RED"
|
|
fi
|
|
if [ $UID -eq "0" ]; then
|
|
USERCOL='\033[00;41;1m'
|
|
# BORDCOL=$REDB
|
|
fi
|
|
PROCCNT=$(jobs -p 2>/dev/null | wc -l )
|
|
if [ $PROCCNT -gt "0" ]; then
|
|
BGPROCCOL=$RED
|
|
else
|
|
BGPROCCOL=$GREENB
|
|
fi
|
|
HOSTNAM=$(hostname -s)
|
|
USERNAM=$(whoami)
|
|
LEFT="\n$BORDCOL\[\016\]$PR_ULCORNER$PR_HBAR\[\017\]$WHITEB($USERCOL\u$WHITEB@$GREENB\h:$cur_tty$WHITEB)$BORDCOL$PR_HBAR$PR_HBAR$PR_HBAR$PR_HBAR$WHITEB($GREEN\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b$WHITEB)$BORDCOL$PR_HBAR$PR_HBAR$WHITEB($BGPROCCOL\j ↻$WHITEB)"
|
|
RIGHT="$BORDCOL$WHITEB($CH$WHITEB)$BORDCOL$PR_HBAR$PR_HBAR$WHITEB($YELLOWB$RCOL\d, \t$WHITEB)$BORDCOL$PR_HBAR$PR_HBAR$WHITEB($GREENB$RCOL$EXIT ↵$WHITEB)$BORDCOL$PR_HBAR$PR_HBAR$PR_HBAR$BORDCOL\n\[\016\]$PR_LLCORNER\[\017\]$PR_HBAR$WHITEB(\w)$BORDCOL$PR_HBAR> \[\e[0m\]"
|
|
#WIDTH=$(tput cols)
|
|
L_LEN="$USERNAM$HOSTNAM$CH$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g')$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\j"
|
|
R_LEN="XXX XXX XX, XX:XX:XX$EXIT"
|
|
L_LEN=${#L_LEN}
|
|
R_LEN=${#R_LEN}
|
|
#echo "$L_LEN"
|
|
let WIDTH=$(tput cols)-${R_LEN}-${L_LEN}+51
|
|
FILL=$BORDCOL$PR_HBAR
|
|
for ((x = 0; x < $WIDTH; x++)); do
|
|
FILL="$FILL$PR_HBAR"
|
|
done
|
|
|
|
PS1="$LEFT$FILL$RIGHT"
|
|
|
|
}
|
|
|