2026-03-14 09:59:41 +01:00
|
|
|
# ----------------------------------------------------------
|
|
|
|
|
# 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"
|
2026-03-15 09:28:34 +01:00
|
|
|
alias cb="xclip -selection clipboard -o | sed 's/^ //' | xclip -selection clipboard -i"
|
2026-03-15 11:00:34 +01:00
|
|
|
alias fetch="fastfetch"
|
2026-03-14 09:59:41 +01:00
|
|
|
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
|
2026-03-15 10:27:08 +01:00
|
|
|
|
2026-03-15 10:34:21 +01:00
|
|
|
# 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))]}"
|
|
|
|
|
}
|
2026-03-15 10:47:57 +01:00
|
|
|
|
|
|
|
|
# 11) Begruessung: zufaellig Systemstatus, Spruch oder Witz
|
2026-03-15 10:51:09 +01:00
|
|
|
# (in exec-Block damit Powerlevel10k Instant Prompt nicht meckert)
|
2026-03-15 10:47:57 +01:00
|
|
|
if [[ -o interactive ]] && command -v cowsay &>/dev/null; then
|
2026-03-15 10:51:09 +01:00
|
|
|
typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet
|
2026-03-15 10:47:57 +01:00
|
|
|
_greet() {
|
2026-03-15 10:51:09 +01:00
|
|
|
local cow_files=(default tux sheep elephant dragon gnu koala)
|
|
|
|
|
local cow="${cow_files[$((RANDOM % ${#cow_files[@]} + 1))]}"
|
2026-03-15 10:47:57 +01:00
|
|
|
case $((RANDOM % 3)) in
|
|
|
|
|
0) # Systemstatus
|
2026-03-15 10:51:09 +01:00
|
|
|
local host load
|
2026-03-15 10:47:57 +01:00
|
|
|
host=$(hostname -s)
|
|
|
|
|
load=$(uptime | sed 's/.*average[s]*: *\([^ ]*\).*/\1/')
|
2026-03-15 10:51:09 +01:00
|
|
|
echo "$host | load $load" | cowsay -f "$cow"
|
2026-03-15 10:47:57 +01:00
|
|
|
;;
|
|
|
|
|
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
|
2026-03-15 10:51:09 +01:00
|
|
|
echo "$msg ($(date '+%d.%m.%Y, %H:%M'))" | cowsay -f "$cow"
|
2026-03-15 10:47:57 +01:00
|
|
|
;;
|
|
|
|
|
2) # Witz/Spruch via fortune
|
|
|
|
|
if command -v fortune &>/dev/null; then
|
2026-03-15 10:51:09 +01:00
|
|
|
fortune -s 2>/dev/null | cowsay -f "$cow"
|
2026-03-15 10:47:57 +01:00
|
|
|
else
|
2026-03-15 10:51:09 +01:00
|
|
|
echo "Keine Witze installiert. Sad." | cowsay -f "$cow"
|
2026-03-15 10:47:57 +01:00
|
|
|
fi
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
}
|
|
|
|
|
_greet
|
|
|
|
|
unfunction _greet
|
|
|
|
|
fi
|