|
@@ -6,53 +6,105 @@ setopt prompt_subst
|
|
|
|
|
|
# enable colors
|
|
# enable colors
|
|
autoload colors zsh/terminfo
|
|
autoload colors zsh/terminfo
|
|
-if [[ "$terminfo[colors]" -ge 8 ]]; then
|
|
|
|
|
|
+if [ "$terminfo[colors]" -ge 8 ]; then
|
|
colors
|
|
colors
|
|
fi
|
|
fi
|
|
-for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
|
|
|
|
|
|
+for color in RED GREEN YELLOW BLUE MAGENTA CYAN ORANGE WHITE; do
|
|
eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
|
|
eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
|
|
eval PR_LIGHT_$color='%{$fg[${(L)color}]%}'
|
|
eval PR_LIGHT_$color='%{$fg[${(L)color}]%}'
|
|
done
|
|
done
|
|
PR_NO_COLOR="%{$terminfo[sgr0]%}"
|
|
PR_NO_COLOR="%{$terminfo[sgr0]%}"
|
|
|
|
|
|
export PR_OS_NAME=$(uname -s)
|
|
export PR_OS_NAME=$(uname -s)
|
|
-export PR_OS_ARCH=$(uname -m)
|
|
|
|
|
|
|
|
if [ -f /etc/debian_version ]; then
|
|
if [ -f /etc/debian_version ]; then
|
|
- PR_OS_NAME="$(lsb_release -is)/$(lsb_release -cs)"
|
|
|
|
|
|
+ if which lsb_release >/dev/null 2>&1 ; then
|
|
|
|
+ PR_OS_NAME="${PR_BLUE}$(lsb_release -is)${PR_WHITE}/${PR_BLUE}$(lsb_release -cs)"
|
|
|
|
+ fi
|
|
if [ -f /etc/debian_chroot ]; then
|
|
if [ -f /etc/debian_chroot ]; then
|
|
- PR_OS_NAME="${PR_LIGHT_RED}chroot:${PR_WHITE}${PR_OS_NAME}"
|
|
|
|
|
|
+ PR_OS_NAME="${PR_RED}chroot${PR_WHITE}(${PR_OS_NAME}${PR_WHITE} ${PR_MAGENTA}$(uname -m)${PR_WHITE})"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
-PR_OS_NAME="${PR_OS_NAME} ${PR_OS_ARCH}"
|
|
|
|
|
|
|
|
-if [ -n "$SSH_CLIENT" ]; then
|
|
|
|
- export PR_OS_SSH="${PR_LIGHT_RED}ssh:"
|
|
|
|
|
|
+if [ -n "${SSH_CLIENT}" ]; then
|
|
|
|
+ export PR_OS_SSH=" via ${PR_LIGHT_RED}ssh"
|
|
else
|
|
else
|
|
export PR_OS_SSH=
|
|
export PR_OS_SSH=
|
|
fi
|
|
fi
|
|
|
|
|
|
-if [ "$UID" = 0 ]; then
|
|
|
|
- export PR_ROOT_PREFIX='*'
|
|
|
|
-else
|
|
|
|
- export PR_ROOT_PREFIX=
|
|
|
|
-fi
|
|
|
|
|
|
+pr_battery_level() {
|
|
|
|
+ if command -v acpi >/dev/null 2>&1 ; then
|
|
|
|
+ acpi --battery 2>/dev/null | sed -r 's/^Battery .*, ([0-9]*)%.*$/\1/'
|
|
|
|
+ fi
|
|
|
|
+}
|
|
|
|
|
|
-function mytitle {
|
|
|
|
- # if running 'xterm like' terminal setting directory name in title bar
|
|
|
|
- if [ "$TERM" = "xterm" ]; then
|
|
|
|
- echo -ne "\033]0;${PR_ROOT_PREFIX}${1}\007"
|
|
|
|
|
|
+pr_battery() {
|
|
|
|
+ local battery_level=
|
|
|
|
+ local level=$(pr_battery_level)
|
|
|
|
+ if [ -n "$level" ] ; then
|
|
|
|
+ if [ "$level" -gt 60 ] ; then
|
|
|
|
+ local bat_color="${PR_GREEN}"
|
|
|
|
+ elif [ "$level" -gt 25 ] ; then
|
|
|
|
+ local bat_color="${PR_YELLOW}"
|
|
|
|
+ else
|
|
|
|
+ local bat_color="${PR_RED}"
|
|
|
|
+ fi
|
|
|
|
+ battery_level="${PR_WHITE}⌁${bat_color}${level}${PR_WHITE}%%"
|
|
fi
|
|
fi
|
|
|
|
+ echo -n "${battery_level}"
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+pr_git_branch() {
|
|
|
|
+ if command -v git >/dev/null 2>&1 ; then
|
|
|
|
+ git branch 2>/dev/null | sed -n 's/^\* //p'
|
|
|
|
+ fi
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+pr_git_prompt() {
|
|
|
|
+ local git_prompt=
|
|
|
|
+ local branch=$(pr_git_branch)
|
|
|
|
+ if [ -n "$branch" ] ; then
|
|
|
|
+ local modified=$(git diff --name-only | wc -l)
|
|
|
|
+ local cached=$(git diff --cached --name-only | wc -l)
|
|
|
|
+ git_prompt="${PR_YELLOW}${branch}${PR_NO_COLOR}"
|
|
|
|
+ if [ "$modified" -gt 0 ]; then
|
|
|
|
+ git_prompt="${git_prompt} ${PR_RED}${modified}${PR_NO_COLOR}⇆"
|
|
|
|
+ fi
|
|
|
|
+ if [ "$cached" -gt 0 ]; then
|
|
|
|
+ git_prompt="${git_prompt} ${PR_LIGHT_GREEN}${cached}${PR_NO_COLOR}⇆"
|
|
|
|
+ fi
|
|
|
|
+ local commits=$(git rev-list --no-merges --count origin/${branch}..${branch} 2>/dev/null)
|
|
|
|
+ if [ "$commits" -gt 0 ]; then
|
|
|
|
+ git_prompt="${git_prompt} ${PR_MAGENTA}${commits}${PR_NO_COLOR}↑"
|
|
|
|
+ fi
|
|
|
|
+ git_prompt="${PR_WHITE} on ${git_prompt}"
|
|
|
|
+ fi
|
|
|
|
+ echo -n "${git_prompt}"
|
|
}
|
|
}
|
|
|
|
|
|
function preexec {
|
|
function preexec {
|
|
- local -a buffer
|
|
|
|
- buffer=(${=1})
|
|
|
|
- mytitle "$buffer[1]"
|
|
|
|
|
|
+ # get the command basename
|
|
|
|
+ local cmd=${1##*\/}
|
|
|
|
+ if [ -n "${SSH_CLIENT}" ]; then
|
|
|
|
+ cmd="%n@%M: ${cmd}"
|
|
|
|
+ fi
|
|
|
|
+ if [ -n "$TMUX" ]; then
|
|
|
|
+ print -Pn "\ek%-3 ${cmd}\e"
|
|
|
|
+ else
|
|
|
|
+ print -Pn "\e]0;${cmd}\a"
|
|
|
|
+ fi
|
|
}
|
|
}
|
|
|
|
|
|
function precmd {
|
|
function precmd {
|
|
- mytitle "$(print -P %~)"
|
|
|
|
|
|
+ local cmd="%~"
|
|
|
|
+ if [ -n "${SSH_CLIENT}" ]; then
|
|
|
|
+ cmd="%n@%M: ${cmd}"
|
|
|
|
+ fi
|
|
|
|
+ if [ -n "$TMUX" ]; then
|
|
|
|
+ print -Pn "\ek%-3 ${cmd}\e"
|
|
|
|
+ else
|
|
|
|
+ print -Pn "\e]0;${cmd}\a"
|
|
|
|
+ fi
|
|
}
|
|
}
|
|
|
|
|
|
myprompt() {
|
|
myprompt() {
|
|
@@ -60,13 +112,18 @@ myprompt() {
|
|
PROMPT="-(%n@%m)-(%(!.%d.%~))->"
|
|
PROMPT="-(%n@%m)-(%(!.%d.%~))->"
|
|
else
|
|
else
|
|
PROMPT='\
|
|
PROMPT='\
|
|
-${PR_BLUE}\
|
|
|
|
-%1(j.-(${PR_YELLOW}jobs:${PR_WHITE}%j${PR_BLUE}).)\
|
|
|
|
-${PR_BLUE}-(\
|
|
|
|
-%(!.${PR_RED}%n.${PR_LIGHT_GREEN}%n)\
|
|
|
|
-${PR_WHITE}@${PR_OS_SSH}${PR_MAGENTA}%m${PR_WHITE} ${PR_OS_PTY}${PR_BLUE})-(\
|
|
|
|
-${PR_WHITE}${PR_OS_NAME}${PR_BLUE})-(${PR_WHITE}%(!.%d.%~)${PR_BLUE})
|
|
|
|
-%0(?..${PR_RED}ret:${PR_WHITE}%?${PR_BLUE})>${PR_NO_COLOR}'
|
|
|
|
|
|
+ %(!.${PR_RED}%n.${PR_LIGHT_GREEN}%n)\
|
|
|
|
+${PR_WHITE} at \
|
|
|
|
+${PR_MAGENTA}%m\
|
|
|
|
+${PR_WHITE}${PR_OS_SSH}\
|
|
|
|
+${PR_WHITE} in \
|
|
|
|
+${PR_GREEN}%(!.%d.%~)\
|
|
|
|
+$(pr_git_prompt)\
|
|
|
|
+%1(j.${PR_WHITE} with ${PR_LIGHT_GREEN}%j${PR_WHITE} jobs.)\
|
|
|
|
+${PR_WHITE} using ${PR_OS_NAME}
|
|
|
|
+%0(?..${PR_RED}%?)\
|
|
|
|
+%(!.${PR_LIGHT_RED}.${PR_LIGHT_CYAN})>${PR_NO_COLOR}'
|
|
|
|
+ RPROMPT='$(pr_battery)'
|
|
fi
|
|
fi
|
|
}
|
|
}
|
|
|
|
|