# dotfiles-rene Dotfiles und Skripte fuer macOS und Linux (Ubuntu auf MacBook Pro). Wird automatisch von [macbook-setup](https://git.motocamp.de/rene/macbook-setup) deployed. ## Inhalt ``` bin/ Skripte (gitcheck, gitsync, gitupdate, toolbox) zsh/ .zshrc mit Aliases, Cheatsheet, Tool-Integrationen micro/ Micro-Editor Konfiguration nvim/ Neovim Konfiguration oh-my-zsh/custom/ Powerlevel10k, zsh-syntax-highlighting heic-scripts/ HEIC-zu-JPEG Konverter (h2j) pi/ Raspberry Pi spezifische Configs ``` ## Git-Werkzeuge (~/bin) Alle Skripte in `bin/` werden von `setup-desktop.sh` automatisch nach `~/` verlinkt. ### gitsync - Repositories synchronisieren Synchronisiert alle Git-Repositories in `~/git-projekte` mit dem Gitea-Server: - Fehlende Repos werden geklont - Repos mit Remote-Aenderungen werden gepullt (fast-forward) - Repos mit lokalen Commits werden gepusht - Repos mit uncommitteten Aenderungen werden markiert ```bash gitsync # alles synchronisieren gitsync --dry-run # nur anzeigen, nichts aendern gitsync --path /foo # anderes Basisverzeichnis ``` Die Repo-Liste ist im Skript hinterlegt. Bei neuen Repos dort einen Eintrag ergaenzen. ### gitcheck - Repository-Status pruefen Zeigt den Status aller Repositories (lokale Aenderungen, ungepushte/ungepullte Commits). Bietet am Ende an, ein dirty Repo direkt in **lazygit** zu öffnen. ```bash gitcheck # nur Repos mit Aenderungen gitcheck --all # alle Repos anzeigen gitcheck --short # kompakte Ausgabe (Standard-Alias) ``` ### gitupdate - Repositories aktualisieren Pullt alle Repositories (ueberspringt Repos mit lokalen Aenderungen). ```bash gitupdate # alle Repos pullen ``` ### toolbox / tools - interaktiver Tool-Launcher Zweistufiges fzf-Menü: erst Kategorie wählen, dann Tool — mit Preview-Pane für ausführliche Beschreibung und Beispiele. Öffnet immer in einem neuen Tab (macOS: iTerm2, Linux: xfce4-terminal, gnome-terminal, kitty, alacritty) im aktuellen Verzeichnis. ```bash tools # interaktiver Launcher ``` Tastenbelegung im Tool-Menü: | Taste | Funktion | |-------|----------| | `Enter` | Tool in neuem Tab starten | | `Ctrl-X` | Installiertes Tool deinstallieren | | `Ctrl-N` | Neues Tool hinzufügen (Wizard) | | `Esc` | Zurück zur Kategorieauswahl | Nicht installierte Tools werden **gedimmt** angezeigt — `Enter` bietet die Installation an (`brew install …` / `sudo apt install …`). Der Kategorie-Header zeigt `(installiert/gesamt)`. Kategorien: Git, Dateien, Anzeige, System, Netzwerk, Text/Daten, Rechnen, Produktiv, Dokumente, Bilder, KI, Spass — insgesamt ~65 vorkonfigurierte Tools. **Eigene Tools** werden in `~/.config/toolbox/custom_tools.json` gespeichert und beim Start automatisch geladen. Die JSON-Datei ist auch manuell editierbar. Mac-only Tools (z.B. `temps`, `dog`) werden auf Linux automatisch ausgeblendet. Linux-Binaries (`batcat`, `fdfind`) werden automatisch aufgelöst. ### git-notify - Update-Benachrichtigung beim Shell-Start Läuft automatisch im Hintergrund wenn eine neue interaktive Shell geöffnet wird. Prüft per `git fetch` alle konfigurierten Repos auf neue Remote-Commits und gibt eine kompakte Meldung aus wenn Updates verfügbar sind — kein Output wenn alles aktuell ist. ``` 📥 Git-Updates verfügbar dotfiles-rene (2), ki-agenten (1) → gitsync zum Aktualisieren ``` ### cb - Clipboard bereinigen Entfernt die 2 fuehrenden Leerzeichen pro Zeile aus der Zwischenablage, die Claude Code bei der Terminal-Ausgabe einfuegt. Nuetzlich beim Kopieren mehrzeiliger Befehle oder Codeblocks. ```bash cb # Zwischenablage bereinigen, dann mit Cmd+V einfuegen ``` Verwendet `pbpaste`/`pbcopy` auf macOS und `xclip` auf Linux. ## Terminal-Tools (installiert & konfiguriert) Alle Tools sind über `tools` (toolbox) erreichbar. Hier eine Auswahl der wichtigsten: | Tool | Kategorie | Zweck | |------|-----------|-------| | **lazygit** | Git | Git TUI: stagen, committen, rebasen | | **tig** | Git | Git-Log TUI: History, Blame, Branches | | **gh** | Git | GitHub CLI: PRs, Issues, Repos | | **delta** | Anzeige | Schöne Git-Diffs (side-by-side) | | **yazi** | Dateien | TUI-Dateimanager mit Bildvorschau | | **fzf** | Dateien | Universeller Fuzzy-Finder | | **fd** | Dateien | Schnelles find | | **rg** | Dateien | Blitzschnelles grep (ripgrep) | | **bat** | Anzeige | cat mit Syntax-Highlighting | | **eza** | Anzeige | Modernes ls mit Git-Status | | **btop** | System | Systemmonitor (CPU/RAM/Netz/Prozesse) | | **jq** | Text/Daten | JSON-Prozessor | | **yq** | Text/Daten | YAML/JSON-Prozessor | | **pandoc** | Dokumente | Dokument-Konverter (md↔pdf↔docx) | | **heic2jpg / h2j** | Bilder | HEIC → JPG konvertieren | | **ffmpeg** | Bilder | Video/Audio konvertieren | | **tldr** | Produktiv | Vereinfachte Manpages mit Beispielen | | **nmap** | Netzwerk | Netzwerk-Scanner | | **zoxide** | Dateien | Smart cd (lernt häufige Pfade) | Screensaver (cmatrix, asciiquarium, pipes.sh, cbonsai) rotieren automatisch nach 5 Minuten Idle. ## Installation ### Automatisch (via macbook-setup) `setup-desktop.sh` klont dieses Repo und verlinkt alles automatisch. ### Manuell (bestehender Mac/Linux — z.B. m13, m16) ```bash # 1. Repo klonen git clone https://git.motocamp.de/rene/dotfiles-rene.git ~/git-projekte/dotfiles-rene # 2. zshrc installieren cd ~/git-projekte/dotfiles-rene/zsh && bash install-zsh-dotfiles.sh # 3. tools-Binary verlinken mkdir -p ~/bin ln -sf ~/git-projekte/dotfiles-rene/bin/toolbox ~/bin/toolbox ln -sf ~/git-projekte/dotfiles-rene/bin/toolbox ~/bin/tools # 4. Skripte ausführbar machen chmod +x ~/git-projekte/dotfiles-rene/bin/*.sh ``` Ab dem nächsten Shell-Start läuft `git-notify` automatisch im Hintergrund und meldet verfügbare Updates. Mit `gitsync` werden alle Repos dann auf einmal aktualisiert. ## Offline-KI einrichten (neuer Mac) Lokale KI (LM Studio auf M1 Max) ueber VPN nutzen: ```bash mac-sync # zshrc mit KI-Aliases holen git clone https://git.motocamp.de/rene/offline-ki.git ~/git-projekte/offline-ki cd ~/git-projekte/offline-ki && pip install -e . ``` Danach (VPN muss verbunden sein): | Alias | Funktion | |-------|----------| | `ki-chat` | Interaktiver Chat (lokal) | | `ki-agent` | Agent mit Dateizugriff (lokal) | | `ki-rchat` | Chat ueber ki.motocamp.de (VPN) | | `ki-ragent` | Agent ueber ki.motocamp.de (VPN) | Voraussetzung: M1 Max zuhause laeuft mit LM Studio (Server aktiv). ## Neuen Mac einrichten (Kurzfassung) 1. Auf einem bestehenden Mac: `gitsync` ausfuehren (pusht alles) 2. Auf dem neuen Mac (noch ohne .zshrc) einmalig: ```bash curl -fsSL https://git.motocamp.de/rene/dotfiles-rene/raw/branch/main/bin/git-sync-all.sh | bash ``` 3. Danach reicht: `gitsync` (lokal) oder `mac-sync` (frisch vom Server)