splitted main file, added rain, bump to v3.0.0
This commit is contained in:
90
profile.d/prompt.sh
Normal file
90
profile.d/prompt.sh
Normal file
@@ -0,0 +1,90 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
# timer_* functions : internal timing function for prompt
|
||||
# ------------------------------------------------------------------------------
|
||||
function timer_now
|
||||
{
|
||||
date +%s%N
|
||||
}
|
||||
|
||||
function timer_start
|
||||
{
|
||||
timer_start=${timer_start:-$(timer_now)}
|
||||
}
|
||||
|
||||
function timer_stop
|
||||
{
|
||||
local delta_us=$((($(timer_now) - $timer_start) / 1000))
|
||||
local us=$((delta_us % 1000))
|
||||
local ms=$(((delta_us / 1000) % 1000))
|
||||
local s=$(((delta_us / 1000000) % 60))
|
||||
local m=$(((delta_us / 60000000) % 60))
|
||||
local h=$((delta_us / 3600000000))
|
||||
# Goal: always show around 3 digits of accuracy
|
||||
if ((h > 0)); then
|
||||
timer_show=${h}h${m}m
|
||||
elif ((m > 0)); then
|
||||
timer_show=${m}m${s}s
|
||||
elif ((s >= 10)); then
|
||||
timer_show=${s}.$((ms / 100))s
|
||||
elif ((s > 0)); then
|
||||
timer_show=${s}.$(printf %03d $ms)s
|
||||
elif ((ms >= 100)); then
|
||||
timer_show=${ms}ms
|
||||
elif ((ms > 0)); then
|
||||
timer_show=${ms}.$((us / 100))ms
|
||||
else
|
||||
timer_show=${us}us
|
||||
fi
|
||||
unset timer_start
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Function triguered internaly by bash : defining prompt
|
||||
# ------------------------------------------------------------------------------
|
||||
set_prompt ()
|
||||
{
|
||||
Last_Command=$? # Must come first!
|
||||
Blue='\[\e[0;34m\]'
|
||||
White='\[\e[01;37m\]'
|
||||
Yellow='\[\e[01;93m\]'
|
||||
Red='\[\e[01;31m\]'
|
||||
Green='\[\e[01;32m\]'
|
||||
OnGrey='\[\e[47m\]'
|
||||
OnRed='\[\e[41m\]'
|
||||
OnBlue='\[\e[44m\]'
|
||||
ICyan='\[\e[0;96m\]'
|
||||
Default='\[\e[00m\]'
|
||||
FancyX='\342\234\227'
|
||||
Checkmark='\342\234\223'
|
||||
|
||||
# Begin with time
|
||||
PS1="\[\e[s$Blue$OnGrey [ \t ] $OnBlue"
|
||||
|
||||
# Add a bright white exit status for the last command
|
||||
|
||||
# If it was successful, print a green check mark. Otherwise, print
|
||||
# a red X.
|
||||
if [[ $Last_Command == 0 ]]; then
|
||||
PS1+="$White$OnBlue [ \$Last_Command "
|
||||
PS1+="$Green$Checkmark "
|
||||
else
|
||||
PS1+="$White$OnRed [ \$Last_Command "
|
||||
PS1+="$Yellow$FancyX "
|
||||
fi
|
||||
|
||||
# Add the ellapsed time and current date
|
||||
timer_stop
|
||||
PS1+="($timer_show)$White ] $OnBlue "
|
||||
|
||||
# If root, just print the host in red. Otherwise, print the current user
|
||||
# and host in green.
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
PS1+="$Red\\u$Green@\\h"
|
||||
else
|
||||
PS1+="$Green\\u@\\h"
|
||||
fi
|
||||
PS1+="\e[K\e[u$Default\n"
|
||||
# Print the working directory and prompt marker in blue, and reset
|
||||
# the text color to the default.
|
||||
PS1+="$ICyan\\w \\\$$Default "
|
||||
}
|
||||
Reference in New Issue
Block a user