dotfiles-rene/README.md
rene 831fe62de7 toolbox: 65 Tools, Install/Uninstall, Ctrl-N, ausführliche Beschreibungen
- Tool-Dataclass um details, brew, apt Felder erweitert
- ~65 Tools in 12 Kategorien (neu: Text/Daten, Dokumente, Bilder, Produktiv)
- Nicht installierte Tools gedimmt mit Install-Angebot (brew/apt)
- Ctrl-X: Deinstallation mit Bestätigung
- Ctrl-N: Wizard zum Hinzufügen eigener Tools (custom_tools.json)
- Kategorie-Header zeigt installiert/gesamt-Zähler
- Preview-Pane rechts mit ausführlichen Beschreibungen und Beispielen
- heic2jpg und h2j korrekt aus Scripts dokumentiert
2026-03-28 10:49:59 +01:00

194 lines
6.8 KiB
Markdown

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