mirror of
https://github.com/lloeki/dotfiles.git
synced 2025-12-06 07:24:39 +01:00
84 lines
2.6 KiB
Bash
84 lines
2.6 KiB
Bash
|
|
##################################################
|
|
# The home directory (HOME) is replaced with a ~
|
|
# The last pwdmaxlen characters of the PWD are displayed
|
|
# Leading partial directory names are striped off
|
|
# /home/me/stuff -> ~/stuff if USER=me
|
|
# /usr/share/big_dir_name -> …/share/big_dir_name if pwdmaxlen=20
|
|
##################################################
|
|
bash_prompt_command() {
|
|
# How many characters of the $PWD should be kept
|
|
local pwdmaxlen=25
|
|
# How to indicate that there has been dir truncation
|
|
local trunc_symbol="…"
|
|
|
|
# get minimum length to not truncate a long name
|
|
local dir=${PWD##*/} #'.' real name
|
|
pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen ))
|
|
|
|
NEW_PWD=${PWD/#$HOME/\~} #gain some place with '~'
|
|
local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen )) #get truncation point
|
|
if [ ${pwdoffset} -gt "0" ] #truncation is needed
|
|
then
|
|
NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen} #truncate
|
|
NEW_PWD=${trunc_symbol}/${NEW_PWD#*/} #add symbol
|
|
fi
|
|
}
|
|
|
|
|
|
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 :
|