From 5a7db2f34aa6a6787d98a001b6d28be97f36abf4 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Fri, 25 Jun 2021 12:56:30 +0200 Subject: First commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- bash/bashrc_prompt | 413 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 413 insertions(+) create mode 100644 bash/bashrc_prompt (limited to 'bash/bashrc_prompt') diff --git a/bash/bashrc_prompt b/bash/bashrc_prompt new file mode 100644 index 0000000..5463afb --- /dev/null +++ b/bash/bashrc_prompt @@ -0,0 +1,413 @@ +#DESCRIPTION: A nicer default shell prompt line + + +#DESCRIPTION: Use full block cursor Do not use full block cursor +#USAGE block-on block-off + +#DESCRIPTION: Print username Do not print username Set colour of username +#USAGE: username-on username-off username-colour + +#DESCRIPTION: Print hostname Do not print hostname Set colour of hostname +#USAGE: hostname-on hostname-off hostname-colour + +#DESCRIPTION: Print IP address in place hostname +#USAGE: hostname-ip + +#DESCRIPTION: Print terminal name Do not print terminal name Set colour of terminal name +#USAGE: pts-on pts-off pts-colour + +#DESCRIPTION: Print git branch Do not print git branch Set colour of git branch +#USAGE: git-on git-off git-colour + +#DESCRIPTION: Print directory Do not print directory Set colour of directory +#USAGE: dir-on dir-off dir-colour + +#DESCRIPTION: Print directory tip Print absolute directory Print custom directory +#USAGE: dir-short dir-full dir-text + +#DESCRIPTION: Print current time Do not print current time Set colour of current time +#USAGE: clock-on clock-off clock-colour + +#DESCRIPTION: Print battery status Do not print battery status Set colour of battery status +#USAGE: battery-on battery-off battery-colour + +#DESCRIPTION: Print featherweight status Do not print featherweight status Set the used colour +#USAGE featherweight-on featherweight-off featherweight-colour + +#DESCRIPTION: Set title on terminal Do not set title on terminal +#USAGE title-on title-off + +#DESCRIPTION: Use two lines Use a single line +#USAGE dual-on dual-off + +#DESCRIPTION: Set colour of error code +#USAGE error-colour + +#DESCRIPTION: Set colour of dollar/hash sign +#USAGE dollar-colour + + +prompt_addons=() + + +__prompt_block="" +if [ "$TERM" = "linux" ]; then + __prompt_block="\033[?8c" +fi +block-on () { + __prompt_block="\033[?8c" + update-prompt +} +block-off () { + __prompt_block="" + update-prompt +} + + +__prompt_username="\u" +username-on () { + __prompt_username="\u" + update-prompt +} +username-off () { + __prompt_username="" + update-prompt +} + + +__prompt_username_colour="94" +if [ "$USER" = "root" ]; then + __prompt_username_colour="91" + if [ "$TERM" = "linux" ]; then + __prompt_username_colour="31;01" + fi +elif [ "$TERM" = "linux" ]; then + __prompt_username_colour="34;01" +fi +username-colour () { + __prompt_username_colour="$*" + update-prompt +} + + +__prompt_hostname="1" +hostname-on () { + __prompt_hostname="1" + update-prompt +} +hostname-ip () { + __prompt_hostname="$( (ifconfig | sed -n 's/^[\t ]*inet[\t ][\t ]*\([^\t ]*\).*$/\1/p' | + sed '/^127\.0\.0\.1$/d' ; echo 127.0.0.1) | sed 1q )" + update-prompt +} +hostname-off () { + __prompt_hostname="0" + update-prompt +} + + +__prompt_hostname_colour="34" +hostname-colour () { + __prompt_hostname_colour="$*" + update-prompt +} + + +__prompt_pts="0" +if [ "$TERM" = "linux" ]; then + __prompt_pts="1" +fi +pts-on () { + __prompt_pts="1" + update-prompt +} +pts-off () { + __prompt_pts="0" + update-prompt +} + + +__prompt_pts_colour="36" +pts-colour () { + __prompt_pts_colour="$*" + update-prompt +} + + +__prompt_git="1" +git-on () { + __prompt_git="1" + update-prompt +} +git-off () { + __prompt_git="0" + update-prompt +} + + +__prompt_git_colour="32" +git-colour () { + __prompt_git_colour="$*" + update-prompt +} + + +__prompt_func_git () { + exec 2>/dev/null + if git status >&2; then + status="$(git status -s -b | head -n 1)" + if [ "$(echo "${status}" | cut -d ' ' -f 3)" = '[ahead' ]; then + echo "${status}" | cut -d ' ' -f 2 + else + echo "${status}" | cut -d ' ' -f 2 | cut -d . -f 1 + fi + fi +} + + +__prompt_dir="\w" +dir-on () { + __prompt_dir="\w" + update-prompt +} +dir-short () { + __prompt_dir="\W" + update-prompt +} +dir-full () { + __prompt_dir='$(pwd)' + update-prompt +} +dir-text () { + __prompt_dir="$(sed -e 's:\\:\\\\:g' <<<"$*")" + update-prompt +} +dir-off () { + __prompt_dir="" + update-prompt +} + + +__prompt_dir_colour="35" +dir-colour () { + __prompt_dir_colour="$*" + update-prompt +} + + +__prompt_clock="(\t)" +clock-on () { + __prompt_clock="(\t)" + update-prompt +} +clock-off () { + __prompt_clock="" + update-prompt +} + + +__prompt_clock_colour="33" +clock-colour () { + __prompt_clock_colour="$*" + update-prompt +} + + +__prompt_dual="\[\033[00m\]\n\[\033[1K\]" +dual-on () { + __prompt_dual="\[\033[00m\]\n\[\033[1K\]" + update-prompt +} +dual-off () { + __prompt_dual="" + update-prompt +} + + +__prompt_dollar_colour="01;34" +if [ "$USER" = "root" ]; then + __prompt_dollar_colour="01;31" +fi +dollar-colour () { + __prompt_dollar_colour="$*" + update-prompt +} + + +__prompt_error_colour="01;31" +error-colour () { + __prompt_error_colour="$*" + update-prompt +} + + +__prompt_func_error () { + if [ "$1" = "0" ]; then + echo -n "" + else + echo -n "(error: $1) " + fi +} + + +__prompt_battery="" +battery-on () { + __prompt_battery='$(__prompt_func_battery)' + update-prompt +} +battery-off () { + __prompt_battery="" + update-prompt +} + + +__prompt_battery_colour="33" +battery-colour () { + __prompt_battery_colour="$*" + update-prompt +} + + +__prompt_func_battery () { + local __first=1 + acpi --battery 2>/dev/null | while read info; do + if [ $__first = 1 ]; then + echo -n "(${info})" + __first=0 + else + echo -n " (${info})" + fi + done +} + + +__prompt_featherweight='$(__prompt_func_featherweight)' +featherweight-on () { + __prompt_featherweight='$(__prompt_func_featherweight)' + update-prompt +} +featherweight-off () { + __prompt_featherweight='' + update-prompt +} + + +__prompt_featherweight_colour="36" +featherweight-colour () { + __prompt_featherweight_colour="$*" + update-prompt +} + + +__prompt_func_featherweight () { + local status + if [ -r ~/.var/lib/featherweight/status ]; then + status="$(cat ~/.var/lib/featherweight/status)" + if [ ! "${status}" = "0" ]; then + echo "(fw: ${status})" + fi + fi +} + + +__prompt_title="" +case "$TERM" in + xterm*|rxvt*|Eterm|aterm|kterm|gnome*) + __prompt_title="\033]0;\u@\h: \w || $(tty)\a" + ;; +esac +title-on () { + __prompt_title="\033]0;\u@\h: \w || $(tty)\a" + update-prompt +} +title-off () { + __prompt_title="" + update-prompt +} + + +__screen_title="" +case "$TERM" in + screen) + __screen_title="\033_\u@\h: \w || $(tty)\033\\" + ;; +esac +screen-title-on () { + __screen_title="\033_\u@\h: \w || $(tty)\033\\" + update-prompt +} +screen-title-off () { + __screen_title="" + update-prompt +} + + +update-prompt () { + local __invisible __addon + __invisible="\[${__prompt_title}${__screen_title}${__prompt_block}\033[00m\]" + PS1="" + if [ ! "${__prompt_username}" = "" ]; then + PS1="${PS1}\[\033[${__prompt_username_colour}m\]${__prompt_username}\[\033[00m\]" + fi + if [ "${__prompt_hostname}" = "1" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}@" + fi + PS1="${PS1}\[\033[${__prompt_hostname_colour}m\]\h\[\033[00m\]" + elif [ ! "${__prompt_hostname}" = "0" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}@" + fi + PS1="${PS1}\[\033[${__prompt_hostname_colour}m\]${__prompt_hostname}\[\033[00m\]" + fi + if [ "${__prompt_pts}" = "1" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}." + fi + PS1="${PS1}\[\033[${__prompt_pts_colour}m\]\l\[\033[00m\]" + fi + if [ "${__prompt_git}" = "1" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}"'$(git status 2>/dev/null >&2 && echo -n : || echo -n "")' + fi + PS1="${PS1}\[\033[${__prompt_git_colour}m\]"'$(__prompt_func_git)'"\[\033[00m\]" + fi + if [ ! "${__prompt_dir}" = "" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1}: " + fi + PS1="${PS1}\[\033[${__prompt_dir_colour}m\]${__prompt_dir}\[\033[00m\]" + fi + if [ ! "${__prompt_clock}" = "" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1} " + fi + PS1="${PS1}\[\033[${__prompt_clock_colour}m\]${__prompt_clock}\[\033[00m\]" + fi + if [ ! "${__prompt_battery}" = "" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1} " + fi + PS1="${PS1}\[\033[${__prompt_battery_colour}m\]${__prompt_battery}\[\033[00m\]" + fi + if [ ! "${__prompt_featherweight}" = "" ]; then + if [ ! "${PS1}" = "" ]; then + PS1="${PS1} " + fi + PS1="${PS1}\[\033[${__prompt_featherweight_colour}m\]${__prompt_featherweight}\[\033[00m\]" + fi + __sh="\[\033[00m\033[${__prompt_dollar_colour}m\]\\$\[\033[00m\]" + __err="\[\033[${__prompt_error_colour}m\]"'$(__prompt_func_error $?)'"\[\033[00m\]" + for __addon in "${prompt_addons[@]}"; do + PS1="${PS1}$(${__addon})" + done + PS1="${__invisible}${__err}${PS1}${__prompt_dual}${__sh} " +} + + +update-prompt + + +PS2='\[\e[01;31m\]> \[\e[00m\]' +PS3='\[\e[01;31m\]> \[\e[00m\]' +PS4='\[\e[01;31m\]+ \[\e[00m\]' -- cgit v1.2.3-70-g09d2