diff options
Diffstat (limited to 'Common/zshrc.m4')
-rw-r--r-- | Common/zshrc.m4 | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/Common/zshrc.m4 b/Common/zshrc.m4 new file mode 100644 index 0000000..c455782 --- /dev/null +++ b/Common/zshrc.m4 @@ -0,0 +1,157 @@ +m4_include(`system.m4')m4_dnl +# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. +# Initialization code that may require console input (password prompts, [y/n] +# confirmations, etc.) must go above this block; everything else may go below. +if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then + source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" +fi + +# If you come from bash you might have to change your $PATH. +export PATH=$HOME/bin:/usr/local/bin:$HOME/.local/bin:$PATH:$HOME/go/bin +export KEYTIMEOUT=1 + +# Check if env setup file exists +if [ ! -f ~/.zsh_env_setup ]; then + echo "export ZSH=$HOME/.oh-my-zsh" > ~/.zsh_env_setup + echo "DEFAULT_USER=$USER" >> ~/.zsh_env_setup + echo "export GIT_EDITOR=\"DEFAULT_EDITOR\"" >> ~/.zsh_env_setup + echo "export GIT_AUTHOR_NAME=\"GIT_USER\"" >> ~/.zsh_env_setup + echo "export GIT_AUTHOR_EMAIL=\"GIT_EMAIL\"" >> ~/.zsh_env_setup +fi + +# Source env setup file +source ~/.zsh_env_setup + +# Source powerlevel10k theme +m4_ifelse(OS_TYPE, `macos', `m4_dnl +source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme +')m4_dnl +m4_ifelse(OS_TYPE, `linux', `m4_dnl +ZSH_THEME="powerlevel10k/powerlevel10k" +')m4_dnl + +COMPLETION_WAITING_DOTS="true" + +ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=7,bold" + +# Setup plugins +plugins=( + git + zsh-autosuggestions + zsh-syntax-highlighting + #zsh-vi-mode +) + +# zsh-vi-mode-setup +#ZVM_CURSOR_STYLE_ENABLED=false +# zvm_config() { +# ZVM_INSERT_MODE_CURSOR=$ZVM_CURSOR_BLOCK +# ZVM_NORMAL_MODE_CURSOR=$ZVM_CURSOR_UNDERLINE +# ZVM_VISUAL_MODE_CURSOR=$ZVM_CURSOR_UNDERLINE +# ZVM_VISUAL_LINE_MODE_CURSOR=$ZVM_CURSOR_UNDERLINE +# ZVM_OPPEND_MODE_CURSOR=$ZVM_CURSOR_BLINKING_BLOCK +# } + +# Setup oh-my-zsh +source $ZSH/oh-my-zsh.sh + +# Modify locale and path +export LC_ALL=en_US.UTF-8 +export LANG=en_US.UTF-8 + +# Set editor +export EDITOR="DEFAULT_EDITOR" + +# Enable vim keybindings (This is enabled using zsh-vi-mode now. +# bindkey -v + +# Add aliases +alias lsp="ps -ax | grep" +alias lsa="ls -la" +alias lsg="ls | grep" +alias lsag="ls -la | grep" +alias ls="tput setaf 3 && echo \"'lsa' for 'ls -la', \n'lsg' for 'ls | grep',\n'lsag' for 'ls -la | grep',\n'lsp' for 'ps -ax |grep'\" && tput sgr0 && ls" + +alias _vi=$(which vi) +alias _vim=$(which vim) +alias vi=nvim +alias vim=nvim + +# man pages in colors +man() { + LESS_TERMCAP_md=$'\e[01;31m' \ + LESS_TERMCAP_me=$'\e[0m' \ + LESS_TERMCAP_se=$'\e[0m' \ + LESS_TERMCAP_so=$'\e[01;44;33m' \ + LESS_TERMCAP_ue=$'\e[0m' \ + LESS_TERMCAP_us=$'\e[01;32m' \ + command man "$@" +} + +# Make tmux window title show the ssh hostname +# Make short hostname only if its not an IP address +__tm_get_hostname(){ + local HOST="$(echo $* | rev | cut -d ' ' -f 1 | rev)" + if echo $HOST | grep -P "^([0-9]+\.){3}[0-9]+" -q; then + echo $HOST + else + echo $HOST| cut -d . -f 1 + fi +} + +__tm_get_current_window(){ + tmux list-windows| awk -F : '/\(active\)$/{print $1}' +} + +# Rename window according to __tm_get_hostname and then restore it after the command +__tm_command() { + if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=| cut -d : -f 1)" = "tmux" ]; then + __tm_window=$(__tm_get_current_window) + # Use current window to change back the setting. If not it will be applied to the active window + trap "tmux set-window-option -t $__tm_window automatic-rename on 1>/dev/null" EXIT HUP INT QUIT PIPE TERM + tmux rename-window "$(__tm_get_hostname $*)" + command "$@" + tmux set-window-option -t $__tm_window automatic-rename on 1>/dev/null + else + command "$@" + fi +} + +ssh() { + __tm_command ssh "$@" +} + +ec2ssh() { + __tm_command ec2ssh "$@" +} + +[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh + +m4_ifelse(OS_TYPE, `macos', `m4_dnl +path+=("$(readlink /Users/$DEFAULT_USER/bin)") +path+=("/Library/TeX/texbin") +path+=("/usr/local/share/dotnet") +path+=("/usr/local/sbin") +path+=("/Users/jakobstendahl/.deta/bin") +path+=("/Applications/Racket v8.2/bin") +path+=("/Users/jakobstendahl/Library/Python/3.9/bin/") +export PATH + +#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! +export SDKMAN_DIR="/Users/jakobstendahl/.sdkman" +[[ -s "/Users/jakobstendahl/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/jakobstendahl/.sdkman/bin/sdkman-init.sh" +')m4_dnl +m4_ifelse(OS_TYPE, `linux', `m4_dnl +alias pbcopy="xsel --clipboard --input" +alias pbpaste="xsel --clipboard --output" +')m4_dnl + +# start only one ssh-agent and reuse the created one +# this is used for sway, although keys added do not persist on reboot +SSH_DIR="$HOME" +if ! pgrep -u "$USER" ssh-agent > /dev/null; then + ssh-agent > "$SSH_DIR/ssh-agent.env" +fi +source "$SSH_DIR/ssh-agent.env" > /dev/null + +[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh |