dotfiles/.bashrc

144 lines
4.0 KiB
Bash
Raw Normal View History

2014-06-22 16:16:14 +00:00
# If not running interactively, don't do anything more
[ -z "$PS1" ] && return
DEBEMAIL=julien
DEBEMAIL=$DEBEMAIL@
DEBEMAIL=${DEBEMAIL}palard.fr
DEBFULLNAME="Julien Palard"
shopt -s cdspell
shopt -s dirspell
shopt -s autocd
shopt -s globstar
2014-06-22 16:16:14 +00:00
shopt -s nocaseglob
2022-11-04 14:45:55 +00:00
CDPATH="~/clones/"
2018-08-12 09:51:32 +00:00
if [ -n "$DISPLAY" ]
then
2016-01-04 09:53:00 +00:00
xset b off
fi
2014-06-22 16:16:14 +00:00
# http://nion.modprobe.de/blog/archives/572-less-colors-for-man-pages.html
export LESS_TERMCAP_mb=$'\E[01;31m' # debut de blink
export LESS_TERMCAP_md=$'\E[01;31m' # debut de gras
export LESS_TERMCAP_me=$'\E[0m' # fin
export LESS_TERMCAP_so=$'\E[01;44;33m' # début de la ligne d'état
export LESS_TERMCAP_se=$'\E[0m' # fin
export LESS_TERMCAP_us=$'\E[01;32m' # début de souligné
export LESS_TERMCAP_ue=$'\E[0m' # fin
export DEBEMAIL DEBFULLNAME
export EDITOR=emacs
export HISTCONTROL=ignoredups
2023-04-17 10:04:33 +00:00
export HISTFILESIZE=50000
export HISTSIZE=50000
2014-06-22 16:16:14 +00:00
2023-01-20 12:26:49 +00:00
export PIP_REQUIRE_VIRTUALENV=1
2014-06-22 16:16:14 +00:00
umask 022
eval "`dircolors`"
HOSTNAME_SUM=$(cksum <(hostname) | cut -d' ' -f1)
2014-06-22 16:16:14 +00:00
HOSTNAME_BOLD=$(( ($HOSTNAME_SUM + 1) % 2))
HOSTNAME_HUE=$(( ($HOSTNAME_SUM + 3) % 6 + 31))
USERNAME_SUM=$(($(cksum <(whoami) | cut -d' ' -f1) + 5)) # + 5 so root gots red.
2014-06-22 16:16:14 +00:00
USERNAME_BOLD=$(( ($USERNAME_SUM + 1) % 2))
USERNAME_HUE=$(( ($USERNAME_SUM + 2) % 6 + 31))
HOSTNAME_COLOR=$'\E'"[$HOSTNAME_BOLD;${HOSTNAME_HUE}m"
USERNAME_COLOR=$'\E'"[$USERNAME_BOLD;${USERNAME_HUE}m"
# make less more friendly for non-text input files, see lesspipe(1)
2023-05-24 09:35:04 +00:00
# needs: apt install lesspipe source-highlight
export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s"
export LESS=' -R '
2014-06-22 16:16:14 +00:00
2018-08-12 09:54:14 +00:00
2017-08-30 08:05:14 +00:00
2017-04-29 09:28:30 +00:00
alias ls='ls --color=auto'
2014-06-22 16:16:14 +00:00
alias fingerprint='find /etc/ssh -name "*.pub" -exec ssh-keygen -l -f {} \;'
2021-10-05 02:19:20 +00:00
alias rekey='ssh-add -e /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so >/dev/null 2>&1; ssh-add -s /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so'
2014-06-22 16:16:14 +00:00
2019-10-16 14:02:39 +00:00
export PYTHONDEVMODE=y
2023-12-03 08:19:59 +00:00
if ! [[ -f "$HOME/.git-prompt.sh" ]]
then
wget -q -O "$HOME/.git-prompt.sh" https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
fi
for extra in /etc/bash_completion ~/.bash_aliases ~/.my_bashrc ~/.git-prompt.sh ~/clones/mdk/compile-python/compile-python.sh ~/clones/mdk/python-prompt/python-prompt.sh
2018-08-12 09:56:25 +00:00
do
2023-12-03 08:19:59 +00:00
if [[ -f "$extra" ]]
2018-08-12 09:56:25 +00:00
then
. $extra
fi
done
2014-06-22 16:16:14 +00:00
if [[ "$TERM" != 'dumb' ]]
then
_TITLE="\[\e]0;\H \W\a\]"
else
_TITLE=''
fi
_PREV_FAIL="\`PREV_FAIL=\$?; if [ \$PREV_FAIL != 0 ]; then echo \[\e[31m\]\$PREV_FAIL \[\e[0m\]; fi\`"
if ! [[ -f ~/.fonts/dejavu/DejaVuSansMonoNerdFontCompleteMono.ttf ]]
then
mkdir -p ~/.fonts/dejavu/
wget -qO ~/.fonts/dejavu/DejaVuSansMonoNerdFontCompleteMono.ttf https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DejaVuSansMono/Regular/complete/DejaVu%20Sans%20Mono%20Nerd%20Font%20Complete%20Mono.ttf
fi
2022-04-23 14:20:57 +00:00
GIT_RED_FG='\e[38;2;244;77;39m'
GIT_RED_BG='\e[48;2;244;77;39m'
PY_BLUE_FG='\e[38;2;53;112;160m'
PY_BLUE_BG='\e[48;2;53;112;160m'
PY_YELLOW_FG='\e[38;2;255;222;87m'
2023-12-03 08:19:59 +00:00
2023-12-03 08:00:54 +00:00
git_prompt()
{
# Wrapper around __git_ps1
# to not show it when the repo is my dotfiles.
2023-12-03 08:19:59 +00:00
if [[ "$(git rev-parse --show-toplevel 2>/dev/null)" != "$HOME" ]]
2023-12-03 08:00:54 +00:00
then
__git_ps1 "$1"
fi
}
PY_PS1='$(python_prompt "${PY_BLUE_FG}🭮${PY_BLUE_BG}${PY_YELLOW_FG}  %s \e[0m${PY_BLUE_FG}🭬\e[0m")'
2023-12-03 08:00:54 +00:00
GIT_PS1='$(git_prompt "${GIT_RED_FG}🭮${GIT_RED_BG}\e[97m  %s \e[0m${GIT_RED_FG}🭬\e[0m")'
2022-04-23 14:20:57 +00:00
PS1="${_TITLE}${_PREV_FAIL}${USERNAME_COLOR}\u\e[0m@${HOSTNAME_COLOR}\H\e[0m:\e[32m\w\e[0m${PY_PS1}${GIT_PS1}\n\$ "
eval "$(direnv hook bash)"
2014-06-22 16:16:14 +00:00
# Removes *~ and #*# files in curent folder, for a depth limited to 3 folders.
clean()
{
2023-12-01 13:53:15 +00:00
find -maxdepth 4 \
2023-01-20 12:29:10 +00:00
\( -name '*~' -o -name '#*#' -o -name .tox -o -name .mypy_cache \) \
-print0 | xargs -0 rm -vfr
2014-06-22 16:16:14 +00:00
}
2023-12-01 13:53:15 +00:00
code-block()
{
printf '```%s\n' "$1"
cat
printf '```\n'
}
2021-11-06 09:26:03 +00:00
e()
{
emacsclient --no-wait "$@"
}
2022-09-02 08:39:22 +00:00
venv()
{
# Simple helper to use direnv to create Python venvs.
#
# See https://github.com/pappasam/jedi-language-server/issues/199#issuecomment-1836880575
# for more context.
printf "VIRTUAL_ENV=.venv\nlayout python3\n" > .envrc
2023-01-20 12:48:24 +00:00
direnv allow .
2022-09-02 08:39:22 +00:00
}