Der Installer installiert zsh bei Bedarf selbst (apt-get, dnf, pacman, zypper, apk) und sagt das im Kopf und in der Ausgabe. Ohne zsh bricht der Shell-Teil jetzt VOR dem ersten Schreibzugriff ab (Exit 1, Befehl genannt, ~/.zshrc unangetastet), statt einen wirkungslosen Prompt-Eintrag zu hinterlassen. install_zsh meldet Erfolg nur bei echtem Fund im PATH, chsh-Fehler werden gemeldet, Abschlusszeile nennt Exit-Status.
94 lines
3.9 KiB
Markdown
94 lines
3.9 KiB
Markdown
# Kalina CI in der Shell
|
||
|
||
Prompt und Terminal-Palette in derselben Farbwelt wie das VS-Code-Theme
|
||
(`themes/kalina-ci-dark.json`). Der Prompt ist ein eigenstaendiges zsh-Modul,
|
||
kein oh-my-zsh und kein powerlevel10k noetig.
|
||
|
||
```
|
||
┌─ kalina ~/kalina-ci · main ✚1 ✎2 · 4.2s
|
||
└─ ❯
|
||
```
|
||
|
||
| Farbe | Wert | Rolle |
|
||
|---|---|---|
|
||
| Tinte | `#0B0F14` | Flaeche |
|
||
| Knochenweiss | `#F5F5EF` | Text, Pfad |
|
||
| Markenrot | `#C1121F` | **nur Grafik** (Pfeil, Cursor) — 3,09:1 auf Tinte |
|
||
| Text-Rot | `#E0454F` | Fehlercode, Akzent — 4,70:1 auf Tinte |
|
||
| Salbei | `#7FA88C` | **nur** Git „hinzugefuegt" |
|
||
| Steel | `#3A4250` | Linien |
|
||
| Muted | `#8A94A2` | Hostname |
|
||
|
||
## zsh ist Pflicht
|
||
|
||
Der Prompt ist zsh-Syntax in `~/.zshrc`. In bash, fish oder sh passiert nichts — auch dann
|
||
nicht, wenn die Datei korrekt geschrieben wurde. Deshalb:
|
||
|
||
1. **Fehlt zsh, installiert `install.sh` ihn selbst** — `apt-get`, `dnf`, `pacman`, `zypper`
|
||
oder `apk`, je nach System. Der Versuch steht als erste Zeile im Shell-Teil.
|
||
2. **Geht das nicht** (kein bekannter Paketmanager, oder `sudo` verlangt ein Passwort ohne
|
||
`-n`), bricht der Shell-Teil **vor** dem ersten Schreibzugriff ab, nennt den genauen Befehl
|
||
und endet mit Exit 1. `~/.zshrc` bleibt dann unangetastet — ein Eintrag dort waere in bash
|
||
ohnehin wirkungslos.
|
||
3. **Login-Shell**: `chsh -s <zsh>` laeuft am Ende (abschaltbar mit `--no-chsh`). Wirksam wird
|
||
es erst in der naechsten Sitzung: `exec zsh` fuer sofort, sonst neu einloggen.
|
||
|
||
Wer zsh von Hand nachzieht:
|
||
|
||
```sh
|
||
sudo apt-get install -y zsh # Debian/Ubuntu
|
||
sudo dnf install -y zsh # Fedora
|
||
sudo pacman -S --needed zsh # Arch
|
||
sudo zypper install -y zsh # openSUSE
|
||
sudo apk add zsh # Alpine
|
||
bash install.sh # danach erneut
|
||
```
|
||
|
||
## Installation auf einer neuen Maschine
|
||
|
||
```sh
|
||
# oder direkt, ohne Klon (Repo ist oeffentlich lesbar):
|
||
# curl -fsSLo install.sh https://gitea.m-m.bio/mm/kalina-ci/raw/branch/main/shell/install.sh
|
||
git clone https://gitea.m-m.bio/mm/kalina-ci.git
|
||
cd kalina-ci/shell
|
||
./install.sh --dry-run # zeigen, was passieren wuerde
|
||
./install.sh # ausfuehren
|
||
```
|
||
|
||
Das Skript ist idempotent, sichert jede Datei nach `.vor-kalina-ci-<stempel>`
|
||
und laesst sich in Teilen fahren:
|
||
|
||
| Schalter | Wirkung |
|
||
|---|---|
|
||
| `--dry-run` | nichts schreiben, nur anzeigen |
|
||
| `--shell-only` | nur zsh + Prompt |
|
||
| `--terminal-only` | nur Terminal-Palette |
|
||
| `--no-chsh` | Login-Shell nicht umstellen (Prompt bleibt, bis du `zsh` startest) |
|
||
|
||
Erkannt und eingerichtet werden: **foot** (`~/.config/foot/foot.ini`,
|
||
`[colors-dark]`), **qterminal** (`~/.local/share/qterminal-ci/…/KalinaCI.colorscheme`
|
||
plus `~/.config/qterminal.org/qterminal.ini` und ein `environment.d`-Eintrag,
|
||
weil qtermwidget6 nur `XDG_DATA_DIRS` durchsucht), **xfce4-terminal**
|
||
(`~/.config/xfce4/terminal/terminalrc` **und** `xfconf-query`, sonst gewinnt
|
||
das GTK-Theme) sowie **xterm** (`~/.Xresources`, aktiv nach `xrdb -merge`).
|
||
|
||
## Schalter im Prompt
|
||
|
||
| Variable | Wirkung |
|
||
|---|---|
|
||
| `KALINA_CI_PROMPT=0` | Prompt abschalten (Modul wird nicht geladen) |
|
||
| `KALINA_CI_NO_NEWLINE=1` | keine Leerzeile vor dem Prompt |
|
||
| `KALINA_CI_TRUECOLOR=0\|1` | Farbmodus erzwingen (sonst Automatik) |
|
||
|
||
## Fallen, die beim Ausrollen aufgefallen sind
|
||
|
||
- **Truecolor kommt per SSH nicht an.** `COLORTERM` wird nicht uebertragen, remote
|
||
greift der 256-Farben-Ersatz (231/145/60/161 statt exakt). Das ist gewollt.
|
||
- **Der erste Prompt darf kein `✗1` zeigen.** `precmd` liest `$?` aus dem Ende der
|
||
`.zshrc`; das Modul setzt den ersten echten Prompt deshalb auf 0.
|
||
- **p10k wird abgeloest, nicht umgef aerbt.** Wer `~/.p10k.zsh` behaelt, muss
|
||
`ZSH_THEME=""` setzen und die Instant-Prompt-Zeilen samt `fi` auskommentieren —
|
||
sonst startet jede Shell mit `parse error near 'fi'`.
|
||
- **Login-Shell-Wechsel:** nicht-interaktive zsh-Aufrufe (`ssh host '…'`) brechen bei
|
||
leerem Glob ab, bash nicht. Das Modul setzt deshalb `no_nomatch` in `~/.zshenv`.
|