aboutsummaryrefslogtreecommitdiff
path: root/Common/zshrc
blob: bba6b7f5ff312d1482ea3ff53808164a734a1e0e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# 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:$PATH

# 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
fi

# Source env setup file
source ~/.zsh_env_setup

# Source powerlevel10k theme
case "$OSTYPE" in
    darwin*)
        source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme;;
    linux*)
        ZSH_THEME="powerlevel10k/powerlevel10k";;
esac

COMPLETION_WAITING_DOTS="true"

# Setup plugins
plugins=(
  git
  zsh-autosuggestions
  zsh-syntax-highlighting
)

# 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 vim as default editor
# export EDITOR=$(which vim)

# 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 notes="vim ~/Documents/notes.txt"
alias todo="vim ~/Documents/todo.txt"

# 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

case "$OSTYPE" in
    darwin*)
        path+=("$(readlink /Users/$DEFAULT_USER/bin)")
        path+=("/Library/TeX/texbin")
        path+=("/usr/local/share/dotnet")
        path+=("/usr/local/sbin")
        export PATH

        alias krak='/Applications/GitKraken.app/Contents/MacOS/GitKraken -p "$(PWD)" &>> /dev/null &'
        
        #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"
    ;;
    linux*)
        alias pbcopy='xsel --clipboard --input'
        alias pbpaste='xsel --clipboard --output'
    ;;
esac

export EDITOR="vim"
export GIT_AUTHOR_NAME="jakob.stendahl"
export GIT_AUTHOR_EMAIL="jakob.stendahl@infomedia.dk"