Files
dotconfigs/zsh/zshrc
T
2020-01-01 19:21:26 +01:00

206 lines
4.8 KiB
Bash

ZSH=$HOME/.ohmyzsh
DOTCONFDIR=$HOME/.dotconfigs
URL_OMZSH="https://github.com/robbyrussell/oh-my-zsh.git"
### Install oh-my-zsh
if [[ ! -d $ZSH ]]; then
if curl --output /dev/null --silent -m 1 --head --fail "$URL_OMZSH"; then
echo "Installing Oh My ZSH"
git clone "$URL_OMZSH" $ZSH
fi
fi
### Configure oh-my-zsh
# ZSH_THEME="pygmalion"
plugins=(
git
pip
docker-compose
python
virtualenvwrapper
)
source $ZSH/oh-my-zsh.sh
### Configure zsh
# Configure prompt
prompt_segment() {
[[ -n $1 ]] && color=$1 || return
[[ -n $2 ]] && text='%{$fg['$color']%}'$2'%{$reset_color%}' || return
[[ -n $3 ]] && sep='%{$fg[red]%}'$3'%{$reset_color%}' || sep=''
echo -n $sep$text
}
prompt_git() {
(( $+commands[git] )) || return
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}⚡%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_CLEAN=""
echo -n "git:$(git_prompt_info)"
fi
}
prompt_virtualenv() {
local virtualenv_path="$VIRTUAL_ENV"
if [[ -n $virtualenv_path ]]; then
text="penv:`basename $virtualenv_path`"
echo -n $text
fi
}
prompt_condaenv() {
local env_path="$CONDA_PREFIX"
if [[ -n $env_path ]]; then
text="cenv:`basename $env_path`"
echo -n $text
fi
}
prompt_extensions=(prompt_virtualenv prompt_condaenv prompt_git)
build_prompt() {
# build base prompt
PROMPT=$(prompt_segment magenta '%n')
PROMPT+=$(prompt_segment red '@')
PROMPT+=$(prompt_segment yellow '%m')
PROMPT+=$(prompt_segment red ':')
PROMPT+=$(prompt_segment cyan '%0~')
# build prompt for extensions
local prompt_ext_text=""
local sep=""
for ext in $prompt_extensions; do
local ext_text=$(eval $ext)
if [[ -n $prompt_ext_text ]] && [[ -n $ext_text ]]; then
sep=","
else
sep=""
fi
prompt_ext_text+=$(prompt_segment green $ext_text $sep)
done
# build prompt base - extension separator
if [[ -n $prompt_ext_text ]]; then
PROMPT+=$(prompt_segment red '|')
fi
PROMPT+=$prompt_ext_text
# build prompt suffix
local prompt_nocolor=$(echo $PROMPT | perl -pe "s/%\{[^}]+\}//g")
local prompt_length=${#prompt_nocolor}
if [[ $prompt_length -gt 40 ]]; then
PROMPT+=$(prompt_segment cyan '\n%{\r%}⇒ ')
else
PROMPT+=$(prompt_segment cyan ' ⇒ ')
fi
}
precmd_functions+=(build_prompt)
HISTSIZE=20000
HISTFILE=~/.zsh_history
SAVEHIST=$HISTSIZE
# hosts=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })
### Generic Setup
export LC_ALL='en_US.UTF-8'
export WORKON_HOME=~/.virtualenvs
export EDITOR=vim
if [[ $(uname) = "Darwin" ]]; then
PATH=$PATH:~/Library/Anaconda/bin
fi
source $DOTCONFDIR/dotconf.sh
### Shell function definition
function sortimages () {
case $1 in
-d)
shift
for file in $@; do
DST=`identify -format "%[Exif:DateTimeOriginal]" $file | head -1 | awk '{print $1":"$2}' | awk -F':' '{print $1$2$3"-"$4$5$6}' | awk -F'.' '{print $1 }' | awk -F'::' '{print $1}'`
DST=`echo $DST.jpg`
echo mv $file $DST;
mv $file $DST;
chmod 640 $DST;
done
;;
*)
echo "Rename files"
echo "Usage: sortimages <options> <file-selection> <suffix>"
echo " <file-selection> : for example *.JPG"
echo " <suffix> : rename to "'$date'"-'$time'-suffix.jpg"
echo " <options> : -d rename the files"
echo -n
for file in $@; do
DST=`identify -format "%[Exif:DateTimeOriginal]" ${file} | head -1 | awk '{print $1":"$2}' | awk -F':' '{print $1$2$3"-"$4$5$6}' | awk -F'.' '{print $1 }' | awk -F'::' '{print $1}'`
DST=${DST}'.jpg'
echo mv ${file} ${DST};
done
;;
esac
}
read -r -d '' REMOTE_CMD << EOF
if [ \$(command -v module 2> /dev/null | wc -l) -gt 0 ]; then
module load tmux
fi
if [ \$(lsof -U 2> /dev/null | grep ^tmux | wc -l) -gt 0 ]; then
tmux a
else
tmux
fi
EOF
function st () {
ssh -t $@ ${REMOTE_CMD}
}
compdef st=ssh
### Alias configuration
alias dc='docker-compose --env-file docker-compose.env'
if [[ $(uname) = "Linux" ]]; then
alias em='emacs -nw'
alias ec='emacsclient -c'
alias gl='glances -b'
alias grep='grep --color'
alias ls='ls --color'
alias l='ls -lh --color'
alias open='xdg-open'
fi
if [[ $(uname) = "Darwin" ]]; then
PATH=$PATH:~/Library/Anaconda/bin
alias emacs='/usr/local/opt/emacs/bin/emacs'
alias em='emacs -nw'
alias ec='/usr/local/opt/emacs/bin/emacsclient -c'
alias grep='grep --color=always'
alias l='ls -lh'
fi
### Conda setup on MacOS
if [[ $(uname) = "Darwin" ]]; then
source /Users/mschoengens/Library/Anaconda/etc/profile.d/conda.sh
fi