Files
kalina-ci/shell/README.md
T
Kalina 78d4ed333c feat(shell): Ptyxis fuer Ubuntu 26 und Wayland einrichten
Ubuntu 26.04 bringt GNOME 50 und damit Ptyxis als Standard-Terminal (Wayland-nativ). install.sh legt die Palette als ~/.local/share/org.gnome.Ptyxis/palettes/KalinaCI.palette ab und haengt sie per gsettings (relocatable Schema org.gnome.Ptyxis.Profile) an jedes Profil; ohne Profil nennt es den Weg von Hand. Neue Vorlage shell/palettes/KalinaCI.palette, README-Abschnitt mit echtem Wayland-Screenshot (74,9 % Tinte, 11,9 % Titelbar, ANSI-Farben innerhalb 2/255).
2026-11-02 19:22:46 +01:00

122 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`).
**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/<uuid>/" 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/<uuid>/`
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`.