-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbash_prompt
125 lines (113 loc) · 3.81 KB
/
bash_prompt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/usr/bin/env bash
# vim: ft=sh ts=4 sw=3
# Functions to generate a pretty useful bash prompt
# Check for interactive bash
[ -z "$BASH_VERSION" -a -z "$KSH_VERSION" -o -z "$PS1" ] && return
#
# Fancy PWD display function
#
# 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
# Indicate that there has been dir truncation
local trunc_symbol=".."
local dir=${PWD##*/}
pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen ))
NEW_PWD=${PWD/#$HOME/\~}
local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen ))
if [ ${pwdoffset} -gt "0" ];
then
NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen}
NEW_PWD=${trunc_symbol}/${NEW_PWD#*/}
fi
# Display iTerm2 prompt if available.
# See https://www.iterm2.com/documentation-shell-integration.html
IT2_PS1='';
if [ $(type -t "iterm2_prompt_mark") ];
then
IT2_PS1="$(iterm2_prompt_mark)";
fi
# Display git prompt if available.
GIT_PS1='';
if [ $(type -t "__git_ps1") ];
then
GIT_PS1_SHOWCOLORHINTS='';
GIT_PS1=$(__git_ps1);
fi
# Display drush prompt if available.
DRUSH_PS1='';
if [ $(type -t "__drush_ps1") ];
then
DRUSH_PS1_SHOWCOLORHINTS='';
DRUSH_PS1=$(__drush_ps1 " [%s]");
fi
}
bash_prompt() {
case $TERM in
xterm*|rxvt*)
local TITLEBAR='\[\033]0;\u:${NEW_PWD}${GIT_PS1}${DRUSH_PS1}\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=$G # user name's color
local MC=$C # machine name's color
local PC=$EMB # path's color
local GC=$EMM # git information color
local DC=$EMY # Drupal information color
[ $UID -eq "0" ] && UC=$R # root's color
PS1="${TITLEBAR}\n\${IT2_PS1}${EMG}[${UC}\u${EMG}@${MC}\h ${PC}\${NEW_PWD}${GC}\${GIT_PS1}${DC}\${DRUSH_PS1}${EMG}]\n${UC}\\$ ${NONE}"
# without colors: PS1="[\u@\h \${NEW_PWD}\${GIT_PS1}\${DRUSH_PS1}]\\$ "
# extra backslash in front of closing \$ to make bash colorize the prompt
}
# Enable the prompt.
# Execute this command every time a prompt is drawn
export PROMPT_COMMAND=bash_prompt_command;
# Define the text to display beside the prompt
bash_prompt
# Clean-up the functions we no-longer require
unset bash_prompt
# Configure Git prompt settings defaults.
# These settings provide the best performance.
# Allowed values described in `bash_prompt_git'.
export GIT_PS1_SHOWCOLORHINTS='';
export GIT_PS1_SHOWDIRTYSTATE='';
export GIT_PS1_SHOWSTASHSTATE=''
export GIT_PS1_SHOWUNTRACKEDFILES='';
export GIT_PS1_SHOWUPSTREAM='';
export GIT_PS1_DESCRIBE_STYLE='';