diff --git a/.bashrc b/.bashrc
index f4cfd16..b85394d 100644
--- a/.bashrc
+++ b/.bashrc
@@ -1,29 +1,101 @@
-# ~/.bashrc: executed by bash(1) for non-login shells.
+# Path to your oh-my-bash installation.
+export OSH=/home/tobias/.config/bash/oh-my-bash
 
-source $HOME/.config/environment
+# Set name of the theme to load. Optionally, if you set this to "random"
+# it'll load a random theme each time that oh-my-bash is loaded.
+OSH_THEME="font"
 
-# If not running interactively, don't do anything
-[ -z "$PS1" ] && return
+# Uncomment the following line to use case-sensitive completion.
+# CASE_SENSITIVE="true"
 
-# ignoredups and ignorespace
-HISTCONTROL=ignoreboth
-HISTFILE=$HOME/.cache/bash_history
+# Uncomment the following line to use hyphen-insensitive completion. Case
+# sensitive completion must be off. _ and - will be interchangeable.
+# HYPHEN_INSENSITIVE="true"
 
-# append to the history file, don't overwrite it
-shopt -s histappend
+# Uncomment the following line to disable bi-weekly auto-update checks.
+# DISABLE_AUTO_UPDATE="true"
 
-# check the window size after each command and, if necessary,
-# update the values of LINES and COLUMNS.
-shopt -s checkwinsize
+# Uncomment the following line to change how often to auto-update (in days).
+# export UPDATE_OSH_DAYS=13
 
-[ -f $HOME/.config/bash/colours ] && source $HOME/.config/bash/colours
+# Uncomment the following line to disable colors in ls.
+# DISABLE_LS_COLORS="true"
 
-PS1="$PURPLE\u$nc@$BLUE\H$nc:$GREEN\w$YELLOW"'$(__git_ps1)'"$nc\\n$GREEN\$$nc "
+# Uncomment the following line to disable auto-setting terminal title.
+# DISABLE_AUTO_TITLE="true"
 
-if [ -f /usr/share/git/completion/git-prompt.sh ]; then
-    source /usr/share/git/completion/git-prompt.sh
-else
-    function __git_ps1() { echo ""; };
-fi
+# Uncomment the following line to enable command auto-correction.
+# ENABLE_CORRECTION="true"
 
-[ -f "$HOME/.config/aliasrc" ] && source $HOME/.config/aliasrc
+# Uncomment the following line to display red dots whilst waiting for completion.
+# COMPLETION_WAITING_DOTS="true"
+
+# Uncomment the following line if you want to disable marking untracked files
+# under VCS as dirty. This makes repository status check for large repositories
+# much, much faster.
+# DISABLE_UNTRACKED_FILES_DIRTY="true"
+
+# Uncomment the following line if you want to change the command execution time
+# stamp shown in the history command output.
+# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
+# HIST_STAMPS="mm/dd/yyyy"
+
+# Would you like to use another custom folder than $OSH/custom?
+# OSH_CUSTOM=/path/to/new-custom-folder
+
+# Which completions would you like to load? (completions can be found in ~/.oh-my-bash/completions/*)
+# Custom completions may be added to ~/.oh-my-bash/custom/completions/
+# Example format: completions=(ssh git bundler gem pip pip3)
+# Add wisely, as too many completions slow down shell startup.
+completions=(
+  git
+  composer
+  ssh
+)
+
+# Which aliases would you like to load? (aliases can be found in ~/.oh-my-bash/aliases/*)
+# Custom aliases may be added to ~/.oh-my-bash/custom/aliases/
+# Example format: aliases=(vagrant composer git-avh)
+# Add wisely, as too many aliases slow down shell startup.
+aliases=(
+  general
+)
+
+# Which plugins would you like to load? (plugins can be found in ~/.oh-my-bash/plugins/*)
+# Custom plugins may be added to ~/.oh-my-bash/custom/plugins/
+# Example format: plugins=(rails git textmate ruby lighthouse)
+# Add wisely, as too many plugins slow down shell startup.
+plugins=(
+  git
+  bashmarks
+)
+
+source $OSH/oh-my-bash.sh
+
+# User configuration
+# export MANPATH="/usr/local/man:$MANPATH"
+
+# You may need to manually set your language environment
+# export LANG=en_US.UTF-8
+
+# Preferred editor for local and remote sessions
+# if [[ -n $SSH_CONNECTION ]]; then
+#   export EDITOR='vim'
+# else
+#   export EDITOR='mvim'
+# fi
+
+# Compilation flags
+# export ARCHFLAGS="-arch x86_64"
+
+# ssh
+# export SSH_KEY_PATH="~/.ssh/rsa_id"
+
+# Set personal aliases, overriding those provided by oh-my-bash libs,
+# plugins, and themes. Aliases can be placed here, though oh-my-bash
+# users are encouraged to define aliases within the OSH_CUSTOM folder.
+# For a full list of active aliases, run `alias`.
+#
+# Example aliases
+# alias bashconfig="mate ~/.bashrc"
+# alias ohmybash="mate ~/.oh-my-bash"
diff --git a/.config/aliasrc b/.config/aliasrc
index 06dbe50..e289a99 100644
--- a/.config/aliasrc
+++ b/.config/aliasrc
@@ -7,7 +7,7 @@ alias aliases='vim ~/.config/aliasrc && source ~/.config/aliasrc'
 
 alias bfg='java -jar ~/tools/bfg-1.13.0.jar'
 
-alias cp='cp -i'
+alias cp='cp -iv'
 
 alias df='df -h'
 alias doas='doas -- '
@@ -23,11 +23,14 @@ alias hist-grep='history 0 | grep '
 
 alias j='jump'
 
-alias ls='ls -Flh --color=auto'
+alias less='less -FS'
+alias ls='ls -lFh --color=auto'
 
 alias lsblk='lsblk -o +PARTLABEL -o +FSTYPE'
 
 alias make='make -j5'
+alias mkdir='mkdir -pv'
+alias mv='mv -iv'
 
 alias pacman-autoremove='pacman -Rns $(pacman -Qtdq)'
 
@@ -35,8 +38,11 @@ alias qutebrowser-kiosk='qutebrowser -B $XDG_DATA_DIR/qutebrowser-kiosk -C $XDG_
 
 alias rm='rm -I --one-file-system -v'
 
+alias s3cmd="s3cmd --config=$XDG_CONFIG_DIR/s3cmd/config"
 alias sudo='sudo '
 
+alias wget='wget -c'
+
 ### conditionals
 
 [ -x "$(command -v bat)" ] && alias cat='bat -pp'
diff --git a/.config/bash/.gitkeep b/.config/bash/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/.config/bash/colours b/.config/bash/colours
deleted file mode 100644
index b6aafd1..0000000
--- a/.config/bash/colours
+++ /dev/null
@@ -1,33 +0,0 @@
-black='\[\e[0;30m\]'
-BLACK='\[\e[1;30m\]'
-blackbg='\[\e[40m\]'
-
-red='\[\e[0;31m\]'
-RED='\[\e[1;31m\]'
-redbg='\[\e[41m\]'
-
-green='\[\e[0;32m\]'
-GREEN='\[\e[1;32m\]'
-greenbg='\[\e[42m\]'
-
-yellow='\[\e[0;33m\]'
-YELLOW='\[\e[1;33m\]'
-yellowbg='\[\e[43m\]'
-
-blue='\[\e[0;34m\]'
-BLUE='\[\e[1;34m\]'
-bluebg='\[\e[44m\]'
-
-purple='\[\e[0;35m\]'
-PURPLE='\[\e[1;35m\]'
-purplebg='\[\e[45m\]'
-
-cyan='\[\e[0;36m\]'
-CYAN='\[\e[1;36m\]'
-cyanbg='\[\e[46m\]'
-
-white='\[\e[0;37m\]'
-WHITE='\[\e[1;37m\]'
-whitebg='\[\e[47m\]'
-
-nc='\[\e[0m\]'
diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc
index 4283bde..af1a9d6 100755
--- a/.config/bspwm/bspwmrc
+++ b/.config/bspwm/bspwmrc
@@ -49,11 +49,12 @@ bspc rule -a 'Element' desktop='voip' locked='true'
 bspc rule -a 'Element (Riot)' desktop='voip' locked='true'
 bspc rule -a 'discord' desktop='voip'
 bspc rule -a 'Evolution' desktop='messenger'
-bspc rule -a 'Signal' desktop='messenger' locked='true'
 #bspc rule -a 'Steam' desktop='game'
 bspc rule -a 'Zathura' state='tiled'
-bspc rule -a 'Guitarix:guitarix' desktop='messenger'
 bspc rule -a 'sticky-note:sticky-note' state='floating' sticky='on' border='off'
 bspc rule -a 'Xarchiver' state='floating'
 
+bspc rule -a 'Signal' desktop='messenger' locked='true'
+bspc rule -a 'Thunderbird:Mail' desktop='messenger' locked='true'
+
 $HOME/.config/polybar/launch.sh &
diff --git a/.config/environment b/.config/environment
index 8cea1b7..3197b23 100644
--- a/.config/environment
+++ b/.config/environment
@@ -13,10 +13,12 @@ export MARKPATH="$HOME/.config/zsh/jump_marks"
 
 export NOTMUCH_CONFIG="$HOME/.config/notmuch/config"
 
-export PASSWORD_STORE_GENERATED_LENGTH='64'
+export OSH="$HOME/.config/bash/oh-my-bash"
 
+export PASSWORD_STORE_GENERATED_LENGTH='64'
 export PATH=/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin:$HOME/.local/bin:$GOPATH/bin
 
 export VIMINIT="source $HOME/.config/vim/vimrc"
 
 export ZDOTDIR="$HOME/.config/zsh"
+export ZSH="$ZDOTDIR/oh-my-zsh"
diff --git a/.config/paru/paru.conf b/.config/paru/paru.conf
index f7a1ffa..8539eb5 100644
--- a/.config/paru/paru.conf
+++ b/.config/paru/paru.conf
@@ -4,7 +4,7 @@ CombinedUpgrade = true
 BatchInstall = true
 NewsOnUpgrade = true
 RemoveMake = yes
-BuildDir = $HOME/.local/share/aur-source
+BuildDir = .local/share/aur-source
 
 [bin]
 Sudo = doas
diff --git a/.config/qutebrowser/config-kiosk.py b/.config/qutebrowser/config-kiosk.py
index b92d2c7..4f57d5d 100644
--- a/.config/qutebrowser/config-kiosk.py
+++ b/.config/qutebrowser/config-kiosk.py
@@ -3,3 +3,8 @@ config.load_autoconfig(False)
 c.tabs.show = 'never'
 c.statusbar.show = 'never'
 c.auto_save.session = False
+
+c.url.start_pages = ['https://rustplatz.live/']
+
+config.bind('<Ctrl-Tab>', 'tab-next')
+config.bind('<Ctrl-Shift-Tab>', 'tab-prev')
diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py
index d787391..3b6c9fd 100644
--- a/.config/qutebrowser/config.py
+++ b/.config/qutebrowser/config.py
@@ -25,9 +25,10 @@ config.bind(',B', 'hint links spawn brave {hint-url}')
 
 config.bind(',j',  'spawn --userscript format_json')
 
-config.bind(',s', 'spawn steam steam://openurl/{url}')
+config.bind(',g', 'open {url:scheme}://github1s.com{url:path}{url:query}')
 config.bind(',rr', 'open {url:scheme}://removeddit.com{url:path}{url:query}')
 config.bind(',rt', 'open {url:scheme}://reddit.tube{url:path}{url:query}')
+config.bind(',s', 'spawn steam steam://openurl/{url}')
 
 PASS_SCRIPT_DEFAULT = 'spawn --userscript qute-pass --no-insert-mode --username-target secret --username-pattern "login: (.+)" '
 config.bind(',p',  PASS_SCRIPT_DEFAULT)
diff --git a/.config/vim/vimrc b/.config/vim/vimrc
index 9328f8b..8843c0a 100644
--- a/.config/vim/vimrc
+++ b/.config/vim/vimrc
@@ -1,5 +1,12 @@
 set runtimepath+=~/.config/vim,~/.config/vim/after
-set viminfo+=n~/.cache/viminfo
+
+if has('nvim')
+    " Neovim specific commands
+    set viminfo+=n~/.cache/nviminfo
+else
+    " Standard vim specific commands
+    set viminfo+=n~/.cache/viminfo
+endif
 
 " Plug plugins using VimPlug
 call plug#begin('~/.config/vim/plugged')
@@ -20,6 +27,8 @@ call plug#begin('~/.config/vim/plugged')
     Plug 'lervag/vimtex'
     Plug 'fatih/vim-go'
     Plug 'machakann/vim-swap'
+    Plug 'tpope/vim-sleuth'
+    Plug 'neoclide/coc.nvim', { 'branch': 'release' }
 call plug#end()
 
 packadd termdebug
@@ -138,3 +147,23 @@ let g:tex_flavor = 'latex'
 let g:vimtex_compiler_latexmk = {
 \   'build_dir': 'latexmk_output'
 \}
+
+
+inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
+inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
+
+inoremap <silent><expr> <C-space> coc#refresh()
+
+"GoTo code navigation
+nmap <leader>g <C-o>
+nmap <silent> gd <Plug>(coc-definition)
+nmap <silent> gt <Plug>(coc-type-definition)
+nmap <silent> gi <Plug>(coc-implementation)
+nmap <silent> gr <Plug>(coc-references)
+
+nmap <leader>rn <Plug>(coc-rename)
+
+"show all diagnostics.
+nnoremap <silent> <leader>d :<C-u>CocList diagnostics<cr>
+"manage extensions.
+nnoremap <silent> <leader>e :<C-u>CocList extensions<cr>
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
index db0135a..e022a86 100644
--- a/.config/zsh/.zshrc
+++ b/.config/zsh/.zshrc
@@ -1,5 +1,4 @@
-# Path to your oh-my-zsh installation.
-export ZSH="$ZDOTDIR/oh-my-zsh"
+source "$HOME/.config/environment"
 
 if [ ! -f "$ZSH/oh-my-zsh.sh" ]
 then
diff --git a/.local/bin/rankmirrors-personal-pref b/.local/bin/rankmirrors-personal-pref
index a95cbca..34e9d29 100755
--- a/.local/bin/rankmirrors-personal-pref
+++ b/.local/bin/rankmirrors-personal-pref
@@ -1,3 +1,5 @@
 #!/bin/env sh
 
-curl -Ls "https://www.archlinux.org/mirrorlist/?country=AT&country=BY&country=BE&country=BA&country=BG&country=HR&country=CZ&country=DK&country=FI&country=FR&country=DE&country=GR&country=HU&country=IS&country=IE&country=IT&country=LV&country=LT&country=LU&country=NL&country=MK&country=NO&country=PL&country=PT&country=RO&country=RS&country=SK&country=SI&country=ES&country=SE&country=CH&country=UA&country=GB&protocol=https&ip_version=4"  | sed -e 's/^#Server/Server/' -e '/^#/d' | rankmirrors -n 25 -
+echo "#Server = https://archive.archlinux.org/repos/$(date +"%Y/%m/%d")/\$repo/os/\$arch"
+
+curl -Ls "https://www.archlinux.org/mirrorlist/?country=AT&country=BY&country=BE&country=BA&country=BG&country=HR&country=CZ&country=DK&country=FI&country=FR&country=DE&country=GR&country=HU&country=IS&country=IE&country=IT&country=LV&country=LT&country=LU&country=NL&country=MK&country=NO&country=PL&country=PT&country=RO&country=RS&country=SK&country=SI&country=ES&country=SE&country=CH&country=UA&country=GB&protocol=https&ip_version=4" | sed -e 's/^#Server/Server/' -e '/^#/d' | rankmirrors -n 25 -
diff --git a/.local/bin/start_jack b/.local/bin/start_jack
index b28074c..23483ca 100755
--- a/.local/bin/start_jack
+++ b/.local/bin/start_jack
@@ -1,6 +1,5 @@
 #!/bin/bash
 
-sleep 8
 systemctl --user stop pulseaudio.service
 systemctl --user stop pulseaudio.socket
 
diff --git a/.xprofile b/.xprofile
index 7661c23..39b68f6 100644
--- a/.xprofile
+++ b/.xprofile
@@ -33,7 +33,10 @@ _autostart_on_launch()
     conky --daemonize --config="$HOME/.config/conky/archlinux-updates.conf"
     feh --bg-fill $XDG_PICTURES_DIR/wallpaper/active_wallpaper
 
-    sleep 8
+    ### wait for internet and audio
+    sleep 10
+    start_jack
+    sleep 2
 
     syncthing -no-browser &
 
@@ -44,14 +47,19 @@ _autostart_on_launch()
     steam-runtime -silent -tcp &
     qutebrowser &
 
-    start_jack
     sleep 1
+
+    ### Workspace VOIP
     teamspeak3 &
-    sleep 2
-    alacritty --class "mail" --command sh -c "neomutt" &
+    #sleep 2
+    #alacritty --class "mail" --command sh -c "neomutt" &
     sleep 1
     element-desktop &
+
+    ### Workspace Messenger
     signal-desktop &
+    sleep 1
+    thunderbird &
 
     mopidy &
 }
diff --git a/.zprofile b/.zprofile
index 74be40d..7f63a86 100644
--- a/.zprofile
+++ b/.zprofile
@@ -2,6 +2,8 @@ export VIMINIT='source ~/.config/vim/vimrc'
 export PASSWORD_STORE_GENERATED_LENGTH='64'
 export ZDOTDIR="$HOME/.config/zsh"
 
+source "$HOME/.config/environment"
+
 if [ -x "$(command -v gpgconf)" ]; then
     export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
     gpgconf --launch gpg-agent