summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bash_profile40
-rw-r--r--.bashprompt85
-rw-r--r--.bashrc86
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]'
diff --git a/.bashrc b/.bashrc
index 436af24..dc58285 100644
--- a/.bashrc
+++ b/.bashrc
@@ -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