over-env/zsh-init

61 lines
1.8 KiB
Bash
Executable file

#! /bin/zsh
OVER_PROMPT_CFG="/etc/over/prompt.cfg"
if [[ -a "$OVER_PROMPT_CFG" ]]; then
source "$OVER_PROMPT_CFG"
fi
function tprompt_filter {
PRT="$1"
PRT="${PRT//|HOST|/%m}"
PRT="${PRT//|TTY|/%l}"
COLORLESS="$(print -P "%n@${PRT}"|sed 's/|[A-Z]*|//g')"
PRT="${PRT//|GREEN|/\%\{\e[1;32m%\}}"
PRT="${PRT//|RED|/\%\{\e[1;31m%\}}"
PRT="${PRT//|RFLASH|/\%\{\e[5;31m%\}}"
PRT="${PRT//|DARKGREEN|/\%\{\e[0;32m%\}}"
PRT="${PRT//|YELLOW|/\%\{\e[1;33m%\}}"
# PRT="${PRT//|BLUE|/\%\{\e[1;34m%\}}" # not used
PRT="${PRT//|CYAN|/\%\{\e[1;36m%\}}"
PRT="${PRT//|NONE|/\%\{\e[0m%\}}"
((OFFSET = ${COLUMNS} - ${#COLORLESS} + 9))
PRT="${PRT//|CWD|/%${OFFSET}<\\\\\\\\\\\\\\\<<%~%<<}" # 16x\ protoze to jde exponencialne pres 4 printy (kazdej jich polovinu sezere :)
print "$PRT"
}
function precmd {
local OVER_OPTS
set -A OVER_OPTS ${(s. .)OVER_PROMPT_OPTS}
RAW_DATA="$(/usr/share/over-prompt/data $OVER_OPTS[1] $OVER_OPTS[2] $OVER_OPTS[3])"
if [ -n "$RAW_DATA" ]; then
set -A DATA ${(s.:::.)RAW_DATA}
LOGIN_PART=${DATA[1]}
STATS_PART=${DATA[2]}
PS1a="%(!.|RED|.|GREEN|)%n|NONE|@$LOGIN_PART"
PS1b="%(?.|CYAN|.|RED|%?|NONE|:|RED|)%(!.#.$)|NONE| "
RPS1="[ |CYAN|%T|NONE| | $STATS_PART"
# vyrenderovat
PS1a="$(print "$(tprompt_filter "$PS1a")")"
PS1b="$(print "$(tprompt_filter "$PS1b")")"
RPS1="$(print "$(tprompt_filter "$RPS1")")"
PS1="$(print "$PS1a\n$PS1b")"
RPS1="$(print $RPS1)"
else
PS1a="%(!.|RED|.|GREEN|)%n|NONE|@|HOST|:|DARKGREEN||TTY| |CWD|"
PS1b="%(?.|CYAN|.|RED|%?|NONE|:|RED|)%(!.#.$)|NONE| "
RPS1="[ |CYAN|%T|NONE| | |RFLASH|data gathering error|NONE|"
PS1a="$(print "$(tprompt_filter "$PS1a")")"
PS1b="$(print "$(tprompt_filter "$PS1b")")"
PS1="$(print "${PS1a}\n${PS1b}")"
RPS1="$(print "$(tprompt_filter "$RPS1")")"
fi
}
unset OVER_PROMPT_CFG