diff options
| author | tslil clingman <> | 2020-10-30 20:48:49 -0400 |
|---|---|---|
| committer | tslil clingman <> | 2020-10-30 20:54:19 -0400 |
| commit | ceba6f8fcda9a882d3dbbfb23c004beabf99e320 (patch) | |
| tree | 68ca385bd1eb7894be829e712336064f5b87c111 | |
| parent | 7c1beacef1dbed322e99d633742da6b2f655c603 (diff) | |
Merging fancy bash prompt
| -rw-r--r-- | .bash_profile | 40 | ||||
| -rw-r--r-- | .bashprompt | 85 | ||||
| -rw-r--r-- | .bashrc | 86 |
3 files changed, 150 insertions, 61 deletions
diff --git a/.bash_profile b/.bash_profile index ea05214..6e2c37f 100644 --- a/.bash_profile +++ b/.bash_profile @@ -1 +1,39 @@ -source ~/.bashrc
\ No newline at end of file +export EDITOR=zile +export HISTFILE=$HOME/.histfile +export HISTSIZE=8192 +export LANGUAGE="en_GB.UTF-8" +export PATH=/var/lib/flatpak/exports/bin:$HOME/.local/bin:$HOME/prog/go/bin:$HOME/.cargo/bin:$PATH +export SUDO_EDITOR=zile +export VISUAL=emacs +export ESHELL=bash + +export TEXMFHOME=$HOME/.local/share/texlive +export GO_PATH=$HOME/prog/go + +export XDG_DESKTOP_DIR=$HOME +export XDG_DOCUMENTS_DIR=$HOME/store +export XDG_DOWNLOAD_DIR=$HOME/store/downloads +export XDG_MUSIC_DIR=$HOME/store/music +export XDG_PICTURES_DIR=$HOME/picutures +export XDG_PUBLICSHARE_DIR=$HOME/public +export XDG_TEMPLATES_DIR=$HOME/store/templates +export XDG_VIDEOS_DIR=$HOME/store/videos + +export LESS="-S -R" +export LESSCHARSET=utf-8 +export LESSHISTFILE="-" + +LS_COLORS='rs=0:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:'; +export LS_COLORS + +export GUILE_LOAD_COMPILED_PATH=/usr/local/lib/guile/2.2/site-ccache/ + +eval "$(stack --bash-completion-script stack)" + +umask 077 + +# SSH split +SSH_VAULT_VM="vault-keys" +if [ "$SSH_VAULT_VM" != "" ]; then + export SSH_AUTH_SOCK=/home/user/.SSH_AGENT_$SSH_VAULT_VM +fi diff --git a/.bashprompt b/.bashprompt new file mode 100644 index 0000000..295a0f3 --- /dev/null +++ b/.bashprompt @@ -0,0 +1,85 @@ +# Based on the brilliant https://redandblack.io/blog/2020/bash-prompt-with-updating-time/ + +NEWLINE="\n" +SINGLE_SPACE=" " +PRINTING_OFF="\[" +PRINTING_ON="\]" +RESTORE_CURSOR_POSITION="\e[u" +SAVE_CURSOR_POSITION="\e[s" + +NON_COLOUR="$(tput sgr0)" +DEF_COLOUR="$(tput setaf 240)" +TIM_COLOUR="$(tput bold)$(tput setaf 32)" +DIR_COLOUR="$(tput bold)$(tput setaf 201)" +ERR_COLOUR="$(tput setaf 9)" +DOL_COLOUR="$(tput rev)$(tput setaf 34)" +VCS_COLOUR="$(tput setaf 214)" + +HOST="\H:" +PS2_PROMPT=">" +DIRECTORY="\w" +TIMESTAMP="date +%m/%H.%M" + +move_cursor_to_start_of_ps1() { + command_rows=$(history 1 | wc -l) + if [ "$command_rows" -gt 1 ]; then + let vertical_movement=$command_rows+1 + else + command=$(history 1 | sed 's/^\s*[0-9]*\s*//') + command_length=${#command} + ps1_prompt_length=${#PS1_PROMPT} + let total_length=$command_length+$ps1_prompt_length + let lines=$total_length/${COLUMNS}+1 + let vertical_movement=$lines + fi + tput cuu $vertical_movement +} + +PS0_ELEMENTS=( + "$SAVE_CURSOR_POSITION" "\$(move_cursor_to_start_of_ps1)" + "(" "$TIM_COLOUR" "\$($TIMESTAMP)" "$NON_COLOUR" ")" "$RESTORE_CURSOR_POSITION" +) +PS0=$(IFS=; echo "${PS0_ELEMENTS[*]}") + +set_ps1_prompt() { + local rval=$?; + + local PS1_SYMBOL="#"; + (( $(id -u) )) && PS1_SYMBOL=\$; + + if (( $rval )); then + local PROMPT_COLOUR="$(tput rev)$ERR_COLOUR" + local ERROR_ELEMENTS=( + "$PRINTING_OFF" "$ERR_COLOUR" "$PRINTING_ON" + "<$rval>" + "$PRINTING_OFF" "$DEF_COLOUR" "$PRINTING_ON" + ) + local ERROR_VALUE=$(IFS=; echo "${ERROR_ELEMENTS[*]}") + else + local PROMPT_COLOUR="$DOL_COLOUR" + local ERROR_VALUE="" + fi + PS1_ELEMENTS=( + "(" "$PRINTING_OFF" "$DEF_COLOUR" "$PRINTING_ON" "\$($TIMESTAMP)" + "$PRINTING_OFF" "$NON_COLOUR" "$PRINTING_ON" ")" "[" "$HOST" + "$PRINTING_OFF" "$DIR_COLOUR" "$PRINTING_ON" "$DIRECTORY" + "$PRINTING_OFF" "$NON_COLOUR" "$PRINTING_ON" "]" + "$PRINTING_OFF" "$VCS_COLOUR" "$PRINTING_ON" "\$(vcs)" + "$ERROR_VALUE" + "$PRINTING_OFF" "$PROMPT_COLOUR" "$PRINTING_ON" "$PS1_SYMBOL" + "$PRINTING_OFF" "$NON_COLOUR" "$PRINTING_ON" "$SINGLE_SPACE" + ) + PS1=$(IFS=; echo "${PS1_ELEMENTS[*]}") +} + +PROMPT_COMMAND=set_ps1_prompt + +PS2_ELEMENTS=( + "$PRINTING_OFF" "$PROMPT_COLOUR" "$PRINTING_ON" "$PS2_PROMPT" + "$SINGLE_SPACE" "$PRINTING_OFF" "$NON_COLOUR" "$PRINTING_ON" +) +PS2=$(IFS=; echo "${PS2_ELEMENTS[*]}") + +shopt -s histverify + +PS4='[$EPOCHREALTIME]' @@ -1,71 +1,16 @@ -export HISTFILE=$HOME/.histfile -export HISTSIZE=8192 -export HISTFILESIZE=-1 -export HISTCONTROL=ignoreboth -shopt -s histappend - -export LANGUAGE="en_GB.UTF-8" -export PATH=$HOME/.local/bin:$HOME/prog/go/bin:$HOME/.cargo/bin:$PATH - -export EDITOR=zile -export SUDO_EDITOR=zile -export VISUAL=emacs -export ESHELL=bash - -export GOPATH=$HOME/prog/go -export TEXMFHOME=$HOME/.local/share/texlive - -export BROWSER=iceweasel -export XDG_DESKTOP_DIR=$HOME -export XDG_DOCUMENTS_DIR=$HOME/store -export XDG_DOWNLOAD_DIR=$HOME/store/downloads -export XDG_MUSIC_DIR=$HOME/store/music -export XDG_PICTURES_DIR=$HOME/picutures -export XDG_PUBLICSHARE_DIR=$HOME/public -export XDG_TEMPLATES_DIR=$HOME/store/templates -export XDG_VIDEOS_DIR=$HOME/store/videos - -export LESS="-S -R" -export LESSCHARSET=utf-8 -export LESSHISTFILE="-" - -# ? -# export CATHISTFILE="-" - -LS_COLORS='rs=0:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:'; -export LS_COLORS - - -leftprompt() { - e=$?; (( $e )) && r="\[$(tput setaf 1)\]<$e>\[$(tput sgr0)\]" || r=""; - p=$(echo ${PWD:-?} | sed "s#.*/\(.*\)/\(.*\)#\1/\2#"); # s#$HOME#~# #${PWD##*/} - d=$(date +"%H.%M"); - v=$(vcs); - u=#; (( $(id -u) )) && u=\$; - PS1="\[$(tput sgr0)\][\[$(tput bold)\]\u@\h:\[$(tput setaf 30)\]$p\[$(tput sgr0)\]]\ -(\[$(tput setaf 32)\]$d\[$(tput sgr0)\])$r$v\[$(tput rev)\]$u\[$(tput sgr0)\] "; -} - -PROMPT_COMMAND=leftprompt - case ${TERM} in - xterm*|rxvt*|Eterm|aterm|kterm|gnome*|alacritty) - PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + st*|xterm*|rxvt*|Eterm|aterm|kterm|gnome*|alacritty) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]0;%s:%s\007" "${USER}" "${PWD/#$HOME/\~}"' ;; screen*) - PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033_%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033_%s:%s\033\\" "${USER}" "${PWD/#$HOME/\~}"' ;; esac - -PS4='[$EPOCHREALTIME]' - alias rm='rm -i' alias ls='ls --group-directories-first -vhF --color=always' alias hh='cd $HOME' alias bk='cd $OLDPWD' -alias t=tmux -alias t="date +%H\ %M\ %S | dc -e '6k???86400/r1440/+r24/+p'" alias ..='cd ..' alias ...='cd ../..' @@ -76,7 +21,6 @@ alias ......='cd ../../../../..' alias lower="tr '[:upper:]' '[:lower:]'" alias upper="tr '[:lower:]' '[:upper:]'" alias rot13="tr abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" -alias weather="wget -O - wttr.in/Baltimore?m | less" mvf() { mv $*; cd $_ ;} c() { echo 'scale=13;' $* | bc -l; } @@ -91,4 +35,26 @@ set -o emacs shopt -s autocd shopt -s checkwinsize -eval $(keychain --eval --systemd -q) +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# colored GCC warnings and errors +export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# Load the prompt +source .bashprompt |
