#! /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