108 lines
3.7 KiB
Markdown
108 lines
3.7 KiB
Markdown
|
|
# ZellIDE
|
||
|
|
|
||
|
|
Eine Terminal-basierte IDE-Umgebung gebaut auf Zellij, Helix, Yazi und lazygit.
|
||
|
|
|
||
|
|
## Vision
|
||
|
|
|
||
|
|
Weg von VSCode, zurück ins Terminal - aber mit modernem Komfort. Eine IDE-Erfahrung die sich anfühlt wie eine richtige IDE, aber komplett im Terminal läuft und keine Electron-Bloat mitbringt.
|
||
|
|
|
||
|
|
## Kernideen
|
||
|
|
|
||
|
|
### Auto-Detection & Session Management
|
||
|
|
|
||
|
|
**Git-basierte Projekterkennung:**
|
||
|
|
- Beim `cd` in ein Git-Repository wird automatisch erkannt ob es ein IDE-Projekt ist
|
||
|
|
- Session-Namen werden vom Git-Root-Namen abgeleitet
|
||
|
|
- Format: `ide:projektname`
|
||
|
|
- Eine `.zellij-ide` Datei im Git-Root markiert das Projekt
|
||
|
|
|
||
|
|
**Intelligentes Session-Handling:**
|
||
|
|
- Beim Betreten eines Projekts: Angebot die IDE zu starten oder zu einer laufenden Session zu attachen
|
||
|
|
- Kein Nesting: Wenn bereits in einer Zellij-Session, kein erneuter Prompt
|
||
|
|
- Manuelles Attachen jederzeit möglich via Helper-Script
|
||
|
|
|
||
|
|
### Session-Naming-Schema
|
||
|
|
|
||
|
|
Verschiedene Session-Typen für verschiedene Use-Cases:
|
||
|
|
|
||
|
|
**IDE Sessions:** `ide:projektname`
|
||
|
|
- Immer für Git-Projekte
|
||
|
|
- Name vom Repository-Root abgeleitet
|
||
|
|
- Persistente Layout-Konfiguration
|
||
|
|
|
||
|
|
**Shell Sessions:** `zsh:fancy-name` oder `zsh:verzeichnisname`
|
||
|
|
- Fancy-Names: Zufällige Kombinationen wie "super-koala", "elegant-mammoth"
|
||
|
|
- Oder: Aktuelles Verzeichnis als Name
|
||
|
|
- Für ad-hoc Terminal-Arbeit
|
||
|
|
|
||
|
|
**Custom Sessions:** Offen für weitere Typen
|
||
|
|
- Prefix-System ermöglicht Erweiterung
|
||
|
|
- z.B. `debug:`, `monitor:`, etc.
|
||
|
|
|
||
|
|
### Layout-Struktur
|
||
|
|
|
||
|
|
**Haupt-Layout für IDE:**
|
||
|
|
```
|
||
|
|
┌─────────────┬──────────────────────────┐
|
||
|
|
│ yazi │ │
|
||
|
|
│ (file tree) │ helix │
|
||
|
|
│ │ (main editor) │
|
||
|
|
│ │ │
|
||
|
|
├─────────────┤ │
|
||
|
|
│ lazygit │ │
|
||
|
|
│ │ │
|
||
|
|
└─────────────┴──────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
**Floating Pane:**
|
||
|
|
- Ad-hoc Terminal via Keybind (z.B. Ctrl+t)
|
||
|
|
- Für schnelle Befehle ohne Layout zu zerstören
|
||
|
|
- Ansible-Playbooks ausführen, docker-compose up, etc.
|
||
|
|
|
||
|
|
### Integration & Features
|
||
|
|
|
||
|
|
**Helix LSP Support:**
|
||
|
|
- YAML (ansible-language-server)
|
||
|
|
- Docker Compose
|
||
|
|
- TOML/JSON für Configs
|
||
|
|
- Bash/Shell Scripts
|
||
|
|
- Später: Rust (rust-analyzer)
|
||
|
|
|
||
|
|
**Git-Integration:**
|
||
|
|
- Inline Git-Gutter in Helix
|
||
|
|
- lazygit für visuelle Git-Operationen
|
||
|
|
- Beide Tools arbeiten auf dem gleichen Repo
|
||
|
|
|
||
|
|
**File Navigation:**
|
||
|
|
- yazi als File-Explorer mit Previews
|
||
|
|
- Helix fuzzy file finder (Space+f)
|
||
|
|
- Buffer-Switcher (Space+b)
|
||
|
|
|
||
|
|
## Workflow-Beispiel
|
||
|
|
|
||
|
|
1. `cd ~/git/infrastructure`
|
||
|
|
2. Prompt: "IDE für 'infrastructure' starten? [y/N]"
|
||
|
|
3. Bei 'y': Zellij startet mit IDE-Layout, Session `ide:infrastructure`
|
||
|
|
4. Bei 'n': Normale Shell, später `ide-attach` zum Starten
|
||
|
|
5. Arbeit in der IDE: yazi für Navigation, helix zum Editieren, lazygit für Commits
|
||
|
|
6. Floating Terminal (Ctrl+t) für ansible-playbook Ausführung
|
||
|
|
7. Detach jederzeit, Re-Attach von überall im Projekt
|
||
|
|
|
||
|
|
## Ziele
|
||
|
|
|
||
|
|
- **Komfort:** Fühlt sich an wie eine richtige IDE
|
||
|
|
- **Performance:** Kein Electron, native Terminal-Tools
|
||
|
|
- **Flexibilität:** Erweiterbar, anpassbar, scriptbar
|
||
|
|
- **Konsistenz:** Gleiche Umgebung lokal und auf Remote-Servern
|
||
|
|
- **Muscle Memory:** Helix-Keybinds lernen und überall nutzen
|
||
|
|
|
||
|
|
## Nächste Schritte
|
||
|
|
|
||
|
|
1. Basis-Setup: Zsh-Hooks, Session-Detection
|
||
|
|
2. Zellij-Layout definieren
|
||
|
|
3. Helix-Konfiguration mit LSP
|
||
|
|
4. Helper-Scripts für Session-Management
|
||
|
|
5. Testing mit infrastructure-Repo
|
||
|
|
6. Migration von tmux auf Servern
|
||
|
|
7. Rust-Entwicklungsumgebung aufsetzen
|