# ---------------------------------------------------------- # Zsh-Konfiguration fuer Rene (Linux / MacBook Pro) # Oh My Zsh + Powerlevel10k + Micro # ---------------------------------------------------------- # 1) Powerlevel10k Instant Prompt (muss sehr weit oben stehen) 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 # 2) Oh My Zsh Basis export ZSH="$HOME/.oh-my-zsh" ZSH_THEME="powerlevel10k/powerlevel10k" plugins=( git zsh-syntax-highlighting zoxide ) source "$ZSH/oh-my-zsh.sh" # 3) Powerlevel10k-Konfiguration [[ -f "$HOME/.p10k.zsh" ]] && source "$HOME/.p10k.zsh" # 4) Standard-Editor (lokal: micro, SSH: nicht erzwingen) if [[ -z "$SSH_CONNECTION" ]]; then export EDITOR="micro" export VISUAL="micro" fi # 5) Pfade export PATH="$HOME/bin:$HOME/.local/bin:$HOME/.npm-global/bin:$PATH" # 6) Aliases # ls-Varianten alias ll='ls -lha' alias la='ls -A' alias l='ls -lh' # Verzeichnisse alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' # Konfigdateien alias zshconfig='micro ~/.zshrc' alias p10kconfig='micro ~/.p10k.zsh' # Git-Kurzbefehle alias gs='git status' alias ga='git add' alias gc='git commit' alias gp='git push' alias gl='git log --oneline --graph --decorate' alias gitcheck="~/git-check-all.sh --short" alias gitupdate="~/git-update-all.sh" alias cb="xclip -selection clipboard -o | sed 's/^ //' | xclip -selection clipboard -i" alias fetch="fastfetch" alias gitsync="~/git-sync-all.sh" alias mac-sync="curl -fsSL https://git.motocamp.de/rene/dotfiles-rene/raw/branch/main/bin/git-sync-all.sh | bash" # 7) History HISTFILE="$HOME/.zsh_history" HISTSIZE=5000 SAVEHIST=5000 setopt HIST_IGNORE_DUPS setopt HIST_IGNORE_SPACE setopt SHARE_HISTORY # 8) Zsh-Optionen setopt AUTO_CD # 9) Fenster-/Tab-Titel precmd() { print -Pn "\e]0;%n@%m: %~\a" } export COLORTERM=truecolor # Terminal-Screensaver: zufaellig cmatrix oder asciiquarium nach 5 Min Idle TMOUT=300 TRAPALRM() { local screensavers=() command -v cmatrix &>/dev/null && screensavers+=("cmatrix -sab") command -v asciiquarium &>/dev/null && screensavers+=("asciiquarium") (( ${#screensavers[@]} )) && eval "${screensavers[$((RANDOM % ${#screensavers[@]} + 1))]}" } # 11) Begruessung: zufaellig Systemstatus, Spruch oder Witz # (in exec-Block damit Powerlevel10k Instant Prompt nicht meckert) if [[ -o interactive ]] && command -v cowsay &>/dev/null; then typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet _greet() { local cow_files=(default tux sheep elephant dragon gnu koala) local cow="${cow_files[$((RANDOM % ${#cow_files[@]} + 1))]}" case $((RANDOM % 3)) in 0) # Systemstatus local host load host=$(hostname -s) load=$(uptime | sed 's/.*average[s]*: *\([^ ]*\).*/\1/') echo "$host | load $load" | cowsay -f "$cow" ;; 1) # Datum-Spruch local day=$(date +%u) msg case $day in 1) msg="Montag... Kaffee ist Pflicht!" ;; 2) msg="Dienstag - immerhin kein Montag mehr." ;; 3) msg="Mittwoch - Bergfest!" ;; 4) msg="Donnerstag - morgen ist fast Wochenende!" ;; 5) msg="Freitag! Die Woche gehoert dir." ;; 6) msg="Samstag - Zeit fuer Projekte!" ;; 7) msg="Sonntag - entspann dich mal." ;; esac echo "$msg ($(date '+%d.%m.%Y, %H:%M'))" | cowsay -f "$cow" ;; 2) # Witz/Spruch via fortune if command -v fortune &>/dev/null; then fortune -s 2>/dev/null | cowsay -f "$cow" else echo "Keine Witze installiert. Sad." | cowsay -f "$cow" fi ;; esac } _greet unfunction _greet fi