83 lines
1.9 KiB
Bash
Executable file
83 lines
1.9 KiB
Bash
Executable file
#! /bin/zsh
|
|
|
|
autoload -U colors && colors
|
|
|
|
OVER_PROMPT_CFG="/etc/over/prompt.cfg"
|
|
|
|
if [[ -a "$OVER_PROMPT_CFG" ]]; then
|
|
source "$OVER_PROMPT_CFG"
|
|
fi
|
|
|
|
function strlen {
|
|
local PLAIN
|
|
PLAIN="$(echo $1 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")"
|
|
|
|
echo ${#PLAIN}
|
|
}
|
|
|
|
function set_title {
|
|
if [[ ${TERM} == "screen-bce" || ${TERM} == "screen" ]]; then
|
|
print -Pn "\033k\033${@}\033\134"
|
|
fi
|
|
}
|
|
|
|
function preexec {
|
|
local -a cmd
|
|
cmd=(${(z)1})
|
|
|
|
set_title "${PWD}: ${cmd}"
|
|
}
|
|
|
|
function precmd {
|
|
local CUT OVER_OPTS RAW_DATA LOGIN_PART STATS_PART DATA TOP_LEFT TOP_RIGHT PADDING PADDING_SIZE GIT_BRANCH COLOR
|
|
set -A OVER_OPTS ${(s. .)OVER_PROMPT_OPTS}
|
|
|
|
PS1="$(print "%(?.%{\e[1;36m%}.%{\e[1;31m%}%?%{\e[0m%}:%{\e[1;31m%})%(\!.#.$)%{\e[0m%} ")"
|
|
|
|
RAW_DATA="$(/usr/share/over-prompt/data $OVER_OPTS[1] $OVER_OPTS[2] $OVER_OPTS[3])"
|
|
|
|
GIT_BRANCH="$(git rev-parse --abbrev-ref HEAD 2> /dev/null)"
|
|
|
|
if [[ -n "$GIT_BRANCH" ]]; then
|
|
# rebuild index
|
|
git update-index -q --ignore-submodules --refresh
|
|
|
|
# so that I can check if there are unstaged changes
|
|
git diff-files --quiet --ignore-submodules
|
|
|
|
if [[ $? -eq 0 ]]; then
|
|
COLOR="%{\e[1;32m%}"
|
|
else
|
|
COLOR="%{\e[1;31m%}"
|
|
fi
|
|
|
|
RPS1="$(print "$COLOR$GIT_BRANCH%{\e[0m%}")"
|
|
else
|
|
unset RPS1
|
|
fi
|
|
|
|
if [[ -n "$RAW_DATA" ]]; then
|
|
set -A DATA ${(s.:::.)RAW_DATA}
|
|
LOGIN_PART=${DATA[1]}
|
|
STATS_PART=${DATA[2]}
|
|
|
|
TOP_LEFT=$(print -P "%(\!.\e[1;31m.\e[1;32m)%n\e[0m@$LOGIN_PART")
|
|
TOP_RIGHT=$(print -P "[ \e[1;36m%T\e[0m | $STATS_PART")
|
|
PADDING_SIZE=$(($COLUMNS - $(strlen "$TOP_LEFT") - $(strlen "$TOP_RIGHT")))
|
|
|
|
# if [[ $PADDING_SIZE -lt 0 ]]; then
|
|
# CUT=$((0 - $PADDING_SIZE))
|
|
# TOP_LEFT="${TOP_LEFT[$CUT,-1]}"
|
|
# fi
|
|
|
|
PADDING=$(printf " "%.0s {1..$PADDING_SIZE})
|
|
|
|
print "$TOP_LEFT$PADDING$TOP_RIGHT"
|
|
else
|
|
print -P "\e[5;31m!!! unable to run /usr/share/over-prompt/data\e[0m"
|
|
fi
|
|
|
|
set_title "${PWD}"
|
|
}
|
|
|
|
unset OVER_PROMPT_CFG
|