From 80adf828d041fd30c2bfb584b2a1b12c53ad1a5a Mon Sep 17 00:00:00 2001 From: Jonas Gunz Date: Fri, 2 Dec 2022 00:29:52 +0100 Subject: bash --- bash/10-prompt.bash | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 bash/10-prompt.bash (limited to 'bash/10-prompt.bash') diff --git a/bash/10-prompt.bash b/bash/10-prompt.bash new file mode 100644 index 0000000..ab3b977 --- /dev/null +++ b/bash/10-prompt.bash @@ -0,0 +1,35 @@ +# vi:syntax=sh + +function prompt_command () { + local EXIT="$?" + local REMOTE="" + local VENV="" + local EXECTIME="" + + local NOW=$(date +%s) + + [ $EXIT -eq 0 ] && EXIT="" + [ ! -z "$SSH_CONNECTION" ] && REMOTE="${orange}[R] " + [ -z "$VIRTUAL_ENV" ] || VENV="$(basename "$VIRTUAL_ENV")" + + if [ -n "$__LAST_PROMPT" ]; then + EXECTIME=" ($(( NOW - __LAST_PROMPT ))s)" + fi + + PS1="\n${yellow}\t${EXECTIME}${reset_color}\n${REMOTE}${white}\u@${cyan}\h: ${reset_color} ${yellow}\w ${green}${VENV}\n${red}${EXIT} ${reset_color}→ " + __LAST_PROMPT="$(date +%s)" +} + +function preexec() { + __LAST_PROMPT="$(date +%s)" +} + +preexec_invoke_exec () { + [ -n "$COMP_LINE" ] && return # do nothing if completing + [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND + local this_command=`HISTTIMEFORMAT= history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//"`; + preexec "$this_command" +} +trap 'preexec_invoke_exec' DEBUG + +PROMPT_COMMAND=prompt_command -- cgit v1.2.3