diff --git a/themes/modern/modern.theme.bash b/themes/modern/modern.theme.bash index 583764e2..cfc20e9a 100644 --- a/themes/modern/modern.theme.bash +++ b/themes/modern/modern.theme.bash @@ -9,48 +9,50 @@ SCM_HG_CHAR="${bold_red}☿${normal}" case $TERM in xterm*) - TITLEBAR="\[\033]0;\w\007\]" - ;; + TITLEBAR="\[\033]0;\w\007\]" + ;; *) - TITLEBAR="" - ;; + TITLEBAR="" + ;; esac PS3=">> " is_vim_shell() { - if [ ! -z "$VIMRUNTIME" ] - then + if [ ! -z "$VIMRUNTIME" ]; then echo "[${cyan}vim shell${normal}]" fi } modern_scm_prompt() { CHAR=$(scm_char) - if [ $CHAR = $SCM_NONE_CHAR ] - then + if [ $CHAR = $SCM_NONE_CHAR ]; then return else echo "[$(scm_char)][$(scm_prompt_info)]" fi } -prompt() { - if [ $? -ne 0 ] - then - # Yes, the indenting on these is weird, but it has to be like - # this otherwise it won't display properly. - - PS1="${TITLEBAR}${bold_red}┌─${reset_color}$(modern_scm_prompt)[${cyan}\W${normal}][$(battery_charge)]$(is_vim_shell) -${bold_red}└─▪${normal} " - else - PS1="${TITLEBAR}┌─$(modern_scm_prompt)[${cyan}\W${normal}][$(battery_charge)]$(is_vim_shell) -└─▪ " +detect_venv() { + python_venv="" + # Detect python venv + if [[ -n "${CONDA_DEFAULT_ENV}" ]]; then + python_venv="($PYTHON_VENV_CHAR${CONDA_DEFAULT_ENV}) " + elif [[ -n "${VIRTUAL_ENV}" ]]; then + python_venv="($PYTHON_VENV_CHAR$(basename "${VIRTUAL_ENV}")) " fi } +prompt() { + if [ $? -ne 0 ]; then + PS1="${TITLEBAR}${bold_red}┌─${reset_color}$(modern_scm_prompt)[${cyan}\u${normal}][${cyan}\w${normal}]$(is_vim_shell)\n${bold_red}└─▪${normal} " + else + PS1="${TITLEBAR}┌─$(modern_scm_prompt)[${cyan}\u${normal}][${cyan}\w${normal}]$(is_vim_shell)\n└─▪ " + fi + detect_venv + PS1+="${python_venv}${dir_color}" +} + PS2="└─▪ " - - safe_append_prompt_command prompt