# 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 ` 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-` 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`). **Ptyxis** — seit Ubuntu 26.04 das Standard-Terminal (GNOME 50, Wayland-nativ) — wird zusaetzlich eingerichtet, wenn es neben einem der anderen liegt: Palette als Datei nach `~/.local/share/org.gnome.Ptyxis/palettes/KalinaCI.palette`, dann per `gsettings` an jedes vorhandene Profil gehaengt: ```sh gsettings set "org.gnome.Ptyxis.Profile:/org/gnome/Ptyxis/Profiles//" palette "KalinaCI" ``` Die UUIDs stehen in `gsettings get org.gnome.Ptyxis profile-uuids`. Vor dem ersten Start von Ptyxis gibt es kein Profil — dann legt das Skript nur die Datei ab und nennt den Weg von Hand (Einstellungen → Aussehen → Palette, gegebenenfalls „Alle Paletten anzeigen"). Die Vorlage allein, ohne Skript: ```sh mkdir -p ~/.local/share/org.gnome.Ptyxis/palettes curl -fsSLo ~/.local/share/org.gnome.Ptyxis/palettes/KalinaCI.palette \ https://gitea.m-m.bio/mm/kalina-ci/raw/branch/main/shell/palettes/KalinaCI.palette ``` `shell/palettes/KalinaCI.palette` ist die Vorlage; der Heredoc-Block in `install.sh` traegt dieselben Werte und muss beim Aendern mitgezogen werden. ## 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'`. - **Ubuntu 26: Ptyxis statt GNOME Terminal.** Die Palette ist eine GKeyFile-Datei im Benutzerverzeichnis, die Auswahl haengt aber am Profil (dconf) — Datei allein aendert nichts. - **`gsettings` braucht das relocatable Schema.** `org.gnome.Ptyxis.Profile` ist ohne Pfad nicht adressierbar; der Aufruf muss `org.gnome.Ptyxis.Profile:/org/gnome/Ptyxis/Profiles//` heissen, sonst bricht er mit „is relocatable and needs a :path" ab. - **Login-Shell-Wechsel:** nicht-interaktive zsh-Aufrufe (`ssh host '…'`) brechen bei leerem Glob ab, bash nicht. Das Modul setzt deshalb `no_nomatch` in `~/.zshenv`.