simplified the prompt code; bash support has been dropped

This commit is contained in:
Martinez 2015-02-26 21:34:35 +01:00
parent ba3eb640ec
commit 86f83ced55
2 changed files with 28 additions and 46 deletions

View file

@ -76,6 +76,7 @@ enum {
COL_BLUE, COL_BLUE,
COL_RED, COL_RED,
COL_RFLASH, COL_RFLASH,
COL_CYAN,
COL_NONE COL_NONE
}; };
@ -88,13 +89,14 @@ int main(int argc, char **argv) {
output[0] = 0; output[0] = 0;
color_map[COL_GREEN] = "|GREEN|"; color_map[COL_GREEN] = "\e[1;32m";
color_map[COL_DARKGREEN] = "|DARKGREEN|"; color_map[COL_DARKGREEN] = "\e[0;32m";
color_map[COL_YELLOW] = "|YELLOW|"; color_map[COL_YELLOW] = "\e[1;33m";
color_map[COL_BLUE] = "|BLUE|"; color_map[COL_BLUE] = "\e[1;34m";
color_map[COL_RED] = "|RED|"; color_map[COL_RED] = "\e[1;31m";
color_map[COL_RFLASH] = "|RFLASH|"; color_map[COL_RFLASH] = "\e[5;31m";
color_map[COL_NONE] = "|NONE|"; color_map[COL_CYAN] = "\e[1;36m";
color_map[COL_NONE] = "\e[0m";
ignored.push_back("rootfs"); ignored.push_back("rootfs");
ignored.push_back("proc"); ignored.push_back("proc");
@ -124,11 +126,11 @@ int main(int argc, char **argv) {
get_memswap(space); get_memswap(space);
get_sysload(sysload); get_sysload(sysload);
append(output, "|HOST|", sysload.color); append(output, "%m", sysload.color); // host
append(output, ":"); append(output, ":");
append(output, "|TTY|", COL_DARKGREEN); append(output, "%l", COL_DARKGREEN); // tty
append(output, " "); append(output, " ");
append(output, "|CWD|", COL_DARKGREEN); append(output, "%~", COL_DARKGREEN); // cwd
append(output, ":::"); append(output, ":::");
for (unsigned int i = 0; i < space.size(); i++) { for (unsigned int i = 0; i < space.size(); i++) {

View file

@ -6,26 +6,15 @@ if [[ -a "$OVER_PROMPT_CFG" ]]; then
source "$OVER_PROMPT_CFG" source "$OVER_PROMPT_CFG"
fi fi
function tprompt_filter { function strlen {
PRT="$1" local PLAIN
PRT="${PRT//|HOST|/%m}" PLAIN="$(echo $1 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")"
PRT="${PRT//|TTY|/%l}"
COLORLESS="$(print -P "%n@${PRT}"|sed 's/|[A-Z]*|//g')" echo $#PLAIN
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 { function precmd {
local OVER_OPTS local OVER_OPTS RAW_DATA LOGIN_PART STATS_PART DATA TOP_LEFT TOP_RIGHT PADDING PADDING_SIZE
set -A OVER_OPTS ${(s. .)OVER_PROMPT_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])" RAW_DATA="$(/usr/share/over-prompt/data $OVER_OPTS[1] $OVER_OPTS[2] $OVER_OPTS[3])"
@ -35,26 +24,17 @@ function precmd {
LOGIN_PART=${DATA[1]} LOGIN_PART=${DATA[1]}
STATS_PART=${DATA[2]} STATS_PART=${DATA[2]}
PS1a="%(!.|RED|.|GREEN|)%n|NONE|@$LOGIN_PART" TOP_LEFT=$(print -P "%(\!.\e[1;31m.\e[1;32m)%n\e[0m@$LOGIN_PART")
PS1b="%(?.|CYAN|.|RED|%?|NONE|:|RED|)%(!.#.$)|NONE| " TOP_RIGHT=$(print -P "[ \e[1;36m%T\e[0m | $STATS_PART")
RPS1="[ |CYAN|%T|NONE| | $STATS_PART" PADDING_SIZE=$(($COLUMNS - $(strlen "$TOP_LEFT") - $(strlen "$TOP_RIGHT")))
PADDING=$(printf " "%.0s {1..$PADDING_SIZE})
# vyrenderovat print "$TOP_LEFT$PADDING$TOP_RIGHT"
PS1a="$(print "$(tprompt_filter "$PS1a")")"
PS1b="$(print "$(tprompt_filter "$PS1b")")"
RPS1="$(print "$(tprompt_filter "$RPS1")")"
PS1="$(print "$PS1a\n$PS1b")" PS1="$(print "%(?.\e[1;36m.\e[1;31m%?\e[0m:\e[1;31m)%(!.#.$)\e[0m ")"
RPS1="$(print $RPS1)"
else else
PS1a="%(!.|RED|.|GREEN|)%n|NONE|@|HOST|:|DARKGREEN||TTY| |CWD|" print -P "\e[5;31m!!! unable to run /usr/share/over-prompt/data\e[0m"
PS1b="%(?.|CYAN|.|RED|%?|NONE|:|RED|)%(!.#.$)|NONE| " PS1="$(print "%(?.\e[1;36m.\e[1;31m%?\e[0m:\e[1;31m)%(!.#.$)\e[0m ")"
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 fi
} }