#!/bin/bash set_prompt_fancy() { local is_git="$(git rev-parse --is-inside-work-tree 2>/dev/null)" local last_cmd=$? local txtreset='$(tput sgr0)' local txtbold='$(tput bold)' local txtblack='$(tput setaf 0)' local txtred='$(tput setaf 1)' local txtgreen='$(tput setaf 2)' local txtyellow='$(tput setaf 3)' local txtblue='$(tput setaf 4)' local txtpurple='$(tput setaf 5)' local txtcyan='$(tput setaf 6)' local txtwhite='$(tput setaf 7)' # unicode "✗" local fancyx='\342\234\227' # unicode "✓" local checkmark='\342\234\223' # Line 1: Full date + full time (24h) # Line 2: current path PS1="\[$txtbold\]\[$txtwhite\]\n\D{%A %d %B %Y %H:%M:%S}\n\[$txtgreen\]\w\n" # Line 3: Git repo + path in repo if [ "$is_git" ]; then local git_repo=$(basename `git rev-parse --show-toplevel` 2>/dev/null) local git_rel_path=$(git rev-parse --show-prefix 2>/dev/null) PS1+="$txtcyan$git_repo $txtpurple$git_rel_path$txtreset\n" fi # User color: red for root, yellow for others if [[ $EUID == 0 ]]; then PS1+="\[$txtred\]" else PS1+="\[$txtyellow\]" fi # Line 3: user@host PS1+="\u\[$txtwhite\]@\h\n" # Line 4: a red "✗" or a green "✓" and the error number if [[ $last_cmd == 0 ]]; then PS1+="\[$txtgreen\]$checkmark \[$txtwhite\](0)" else PS1+="\[$txtred\]$fancyx \[$txtwhite\]($last_cmd)" fi # Line 4: green git branch PS1+="\[$txtgreen\]$(__git_ps1 ' (%s)')\[$txtwhite\]" # Line 4: good old prompt, $ for user, # for root PS1+=" \\$ " } set_prompt() { local is_git="$(git rev-parse --is-inside-work-tree 2>/dev/null)" local txtreset='$(tput sgr0)' local txtbold='$(tput bold)' local txtblack='$(tput setaf 0)' local txtred='$(tput setaf 1)' local txtgreen='$(tput setaf 2)' local txtyellow='$(tput setaf 3)' local txtblue='$(tput setaf 4)' local txtpurple='$(tput setaf 5)' local txtcyan='$(tput setaf 6)' local txtwhite='$(tput setaf 7)' # User color: red for root, yellow for others if [[ $EUID == 0 ]]; then PS1+="\[$txtred\]" else PS1+="\[$txtyellow\]" fi # user@host PS1="\u\[$txtwhite\]@\h" # Current path PS1+="\[$txtgreen\]\w " # Git repo + path in repo if [ "$is_git" ]; then local git_repo=$(basename `git rev-parse --show-toplevel` 2>/dev/null) local git_rel_path=$(git rev-parse --show-prefix 2>/dev/null) PS1+="$txtcyan$git_repo $txtpurple$git_rel_path$txtreset" # Green git branch PS1+="\[$txtgreen\]$(__git_ps1 ' (%s)')\[$txtwhite\] " fi # Good old prompt, $ for user, # for root PS1+="$txtreset\\$ " } export PROMPT_COMMAND='set_prompt'