dotfiles/nix/home-manager/modules/bash/bashrc
Magic_RB d3e46e5413
Complete module rework
Signed-off-by: Magic_RB <magic_rb@redalder.org>
2021-08-19 18:24:36 +02:00

105 lines
2.4 KiB
Bash

#!/usr/bin/env bash
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
[[ $DISPLAY ]] && shopt -s checkwinsize
[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
## Enable color on grep
alias grep='grep --color=auto'
## Replace ls and cat with exa and bat respectively
alias ls='@exa@/bin/exa'
alias cat='@bat@/bin/bat'
export PS1="\u@\[\e[37m\]\h\[\e[m\]:\[\e[32m\]\w\[\e[m\]\[\e[31m\]\\$\[\e[m\] "
EMACSCLIENT="`command -v -- emacsclient >/dev/null 2>&1 && printf emacsclient || printf emacsclient-$(uname -m)`"
E() {
if [[ ! -z "${INSIDE_EMACS+x}" ]] && [[ ! -z "${SSH_CONNECTION+x}" ]]
then
emacsclient-remote --sudo "$1"
elif [[ ! -z "${INSIDE_EMACS}" ]]
then
"${EMACSCLIENT}" -a emacs "/sudo::/${1}"
else
"${EMACSCLIENT}" -t -a emacs "/sudo::/${1}"
fi
}
e() {
if [[ ! -z "${INSIDE_EMACS+x}" ]] && [[ ! -z "${SSH_CONNECTION+x}" ]]
then
emacsclient-remote "$1"
elif [[ ! -z "${INSIDE_EMACS}" ]]
then
"${EMACSCLIENT}" -a emacs "${1}"
else
"${EMACSCLIENT}" -t -a emacs "${1}"
fi
}
[[ ! -z "${INSIDE_EMACS+x}" ]] && alias vim="e"
SSH=$(which ssh)
ssh() {
if [[ ! -z "${INSIDE_EMACS+x}" ]]
then
"${SSH}" \
-o "SendEnv INSIDE_EMACS" \
-o "StreamLocalBindUnlink yes" \
-o "ControlMaster auto" \
-o "ControlPath ~/.ssh/controlmasters/%r@%h:%p" \
-Nf \
-R ~/.ssh/emacs-server:/run/user/1000/emacs/server \
$1
"${SSH}" \
-S ~/.ssh/controlmasters/%r@%h:%p \
-o 'SendEnv=INSIDE_EMACS' \
$@
else
"${SSH}" $@
fi
}
xssh() {
if [[ ! -z "${INSIDE_EMACS+x}" ]]
then
"${SSH}" \
-o "SendEnv INSIDE_EMACS" \
-o "StreamLocalBindUnlink yes" \
-o "ControlMaster auto" \
-o "ControlPath ~/.ssh/controlmasters/%r@%h:%p" \
-Nf \
-R ~/.ssh/emacs-server:/run/user/1000/emacs/server \
$1
"${SSH}" \
-S ~/.ssh/controlmasters/%r@%h:%p \
-o 'SendEnv=INSIDE_EMACS' \
-X \
$@
else
"${SSH}" -X $@
fi
}
## Set prompt
export EDITOR="emacsclient"
export BROWSER="firefox-nightly"
## Clear scrollback for vterm
if [[ "$INSIDE_EMACS" = 'vterm' ]]; then
function clear(){
vterm_printf "51;Evterm-clear-scrollback";
tput clear;
}
fi
if [[ "$INSIDE_EMACS" = 'vterm' ]] \
&& [[ -n ${EMACS_VTERM_PATH} ]] \
&& [[ -f ${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh ]]; then
source ${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh
fi