mirror of
https://github.com/lloeki/dotfiles.git
synced 2025-12-06 07:24:39 +01:00
98 lines
2.4 KiB
Bash
98 lines
2.4 KiB
Bash
__truncate_left() {
|
|
local str="$1"
|
|
local maxlen="$2"
|
|
local trunc_symbol="$3"
|
|
local sep_symbol="$4"
|
|
|
|
# get minimum length to not truncate a long name
|
|
if [ -n "$sep_symbol" ]
|
|
then
|
|
local component=${1##*$sep_symbol}
|
|
maxlen=$(( ( maxlen < ${#component} ) ? ${#component} : maxlen ))
|
|
fi
|
|
|
|
# truncation point
|
|
local offset=$(( ${#str} - maxlen ))
|
|
|
|
if [ ${offset} -gt "0" ]
|
|
then
|
|
#truncation is needed
|
|
str=${str:$offset:$maxlen} #truncate
|
|
str=${trunc_symbol}/${str#*/} #add symbol
|
|
fi
|
|
echo "$str"
|
|
}
|
|
|
|
__truncate_dir() {
|
|
dir=${1/#$HOME/\~} #gain some place with '~'
|
|
__truncate_left "$dir" 25 '…' '/'
|
|
}
|
|
|
|
__tpwd() {
|
|
__truncate_dir "$PWD"
|
|
}
|
|
|
|
bash_prompt_command() {
|
|
local pwdmaxlen=25
|
|
local trunc_symbol="…"
|
|
|
|
NEW_PWD=$(__tpwd)
|
|
}
|
|
|
|
|
|
bash_prompt() {
|
|
case $TERM in
|
|
xterm*|rxvt*)
|
|
local TITLEBAR='\[\033]0;\u:${NEW_PWD}\007\]'
|
|
;;
|
|
*)
|
|
local TITLEBAR=""
|
|
;;
|
|
esac
|
|
local NONE="\[\033[0m\]" # unsets color to term's fg color
|
|
|
|
# regular colors
|
|
local K="\[\033[0;30m\]" # black
|
|
local R="\[\033[0;31m\]" # red
|
|
local G="\[\033[0;32m\]" # green
|
|
local Y="\[\033[0;33m\]" # yellow
|
|
local B="\[\033[0;34m\]" # blue
|
|
local M="\[\033[0;35m\]" # magenta
|
|
local C="\[\033[0;36m\]" # cyan
|
|
local W="\[\033[0;37m\]" # white
|
|
|
|
# emphasized (bolded) colors
|
|
local EMK="\[\033[1;30m\]"
|
|
local EMR="\[\033[1;31m\]"
|
|
local EMG="\[\033[1;32m\]"
|
|
local EMY="\[\033[1;33m\]"
|
|
local EMB="\[\033[1;34m\]"
|
|
local EMM="\[\033[1;35m\]"
|
|
local EMC="\[\033[1;36m\]"
|
|
local EMW="\[\033[1;37m\]"
|
|
|
|
# background colors
|
|
local BGK="\[\033[40m\]"
|
|
local BGR="\[\033[41m\]"
|
|
local BGG="\[\033[42m\]"
|
|
local BGY="\[\033[43m\]"
|
|
local BGB="\[\033[44m\]"
|
|
local BGM="\[\033[45m\]"
|
|
local BGC="\[\033[46m\]"
|
|
local BGW="\[\033[47m\]"
|
|
|
|
local UC=$W # user's color
|
|
[ $UID -eq "0" ] && UC=$R # root's color
|
|
|
|
# colorized:
|
|
PS1="${TITLEBAR} ${EMC}[${UC}\u${EMC}@${UC}\h ${EMB}\${NEW_PWD}${EMC}]${UC}\\$ ${NONE}"
|
|
# without colors:
|
|
#PS1="${TITLEBAR}[\u@\h \${NEW_PWD}]\\$ "
|
|
# extra backslash in front of \$ to make bash colorize the prompt
|
|
}
|
|
|
|
PROMPT_COMMAND=bash_prompt_command
|
|
bash_prompt
|
|
unset bash_prompt
|
|
|
|
# vim: set filetype=sh :
|