Compare commits
8
Commits
2d2c1c3957
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7259601df | ||
|
|
78d4ed333c | ||
|
|
d977a9f856 | ||
|
|
ed85797eda | ||
|
|
ca90ac08cc | ||
|
|
e0a5791afb | ||
|
|
397742c7fc | ||
|
|
4fa11ad03c |
No files matched your search
@@ -4,6 +4,30 @@ Format: Datum — was — warum. Die CI beginnt versioniert am 2026-10-23; davor
|
|||||||
sie verstreut (Marke in `brand/`, Dokument-CSS im Open-WebUI-Skill) und wurde nicht
|
sie verstreut (Marke in `brand/`, Dokument-CSS im Open-WebUI-Skill) und wurde nicht
|
||||||
versioniert.
|
versioniert.
|
||||||
|
|
||||||
|
## 1.3.2 — 2026-11-02
|
||||||
|
|
||||||
|
- **Ubuntu 26 und Wayland: Ptyxis wird eingerichtet.** Seit Ubuntu 26.04 ist Ptyxis das
|
||||||
|
Standard-Terminal (GNOME 50, Wayland-nativ). `install.sh` legt die Palette als
|
||||||
|
`~/.local/share/org.gnome.Ptyxis/palettes/KalinaCI.palette` ab und haengt sie per
|
||||||
|
`gsettings` an jedes vorhandene Profil — kein `sudo`, kein Paket. Fehlt das Profil noch,
|
||||||
|
sagt es das statt still nichts zu tun.
|
||||||
|
- Neue Vorlage `shell/palettes/KalinaCI.palette` — die Palette einzeln, ohne Skript
|
||||||
|
installierbar.
|
||||||
|
- Startseite: Abschnitt „Ubuntu 26 und Wayland" mit echtem Wayland-Screenshot
|
||||||
|
(`assets/vorschau-ptyxis.png`): 74,9 % `#0B0F14`, 11,9 % Titelbar `#0E131A`, ANSI-Rot und
|
||||||
|
-Gruen innerhalb 2/255.
|
||||||
|
|
||||||
|
## 1.3.1 — 2026-11-02
|
||||||
|
|
||||||
|
- **zsh ist Pflicht, und das Skript sagt es jetzt auch.** `shell/install.sh` installiert zsh
|
||||||
|
bei Bedarf selbst (apt-get, dnf, pacman, zypper, apk) und schreibt das in den Kopf und in
|
||||||
|
die Ausgabe. Geht es nicht — kein Paketmanager oder `sudo` ohne Passwort — bricht der
|
||||||
|
Shell-Teil **vor dem ersten Schreibzugriff** ab, nennt den genauen Befehl und endet mit
|
||||||
|
Exit 1; `~/.zshrc` bleibt unangetastet, statt einen wirkungslosen Prompt-Eintrag zu
|
||||||
|
hinterlassen. Ein `chsh`-Fehlschlag wird gemeldet statt verschluckt, und die Abschlusszeile
|
||||||
|
nennt Exit-Status und naechsten Schritt.
|
||||||
|
- `install_zsh` meldet Erfolg nur noch, wenn `zsh` danach wirklich im `PATH` liegt.
|
||||||
|
|
||||||
## 1.3.0 — 2026-11-02
|
## 1.3.0 — 2026-11-02
|
||||||
|
|
||||||
- **Die CI reicht bis in die Shell.** `shell/prompt.zsh` rendert einen zweizeiligen Prompt
|
- **Die CI reicht bis in die Shell.** `shell/prompt.zsh` rendert einen zweizeiligen Prompt
|
||||||
@@ -11,6 +35,9 @@ versioniert.
|
|||||||
`themes/kalina-ci-dark.json`: Tinte `#0B0F14`, Knochenweiß `#F5F5EF`, Markenrot `#C1121F`
|
`themes/kalina-ci-dark.json`: Tinte `#0B0F14`, Knochenweiß `#F5F5EF`, Markenrot `#C1121F`
|
||||||
nur als Grafik, Text-Rot `#E0454F` (4,70:1), Salbei `#7FA88C` nur an Git. Ausgerollt auf vier
|
nur als Grafik, Text-Rot `#E0454F` (4,70:1), Salbei `#7FA88C` nur an Git. Ausgerollt auf vier
|
||||||
Maschinen (Arbeitsplatz, Laptop, iMac, Gast-VM); die Pixelprobe zeigt auf jeder `#0B0F14`.
|
Maschinen (Arbeitsplatz, Laptop, iMac, Gast-VM); die Pixelprobe zeigt auf jeder `#0B0F14`.
|
||||||
|
- **Die Startseite traegt Vorschaubild und Marke.** `assets/vorschau.png` (1200 × 630) zeigt
|
||||||
|
Deckblatt, Prompt und Token in einem Bild; `assets/vorschau-shell.png` steht im Shell-Abschnitt,
|
||||||
|
`assets/logo-platte.png` ist die Marke auf Knochenweiss (lesbar auf hellem wie dunklem Gitea).
|
||||||
- **`shell/install.sh` richtet weitere Maschinen ohne meinen Zugriff ein.** Idempotent, sichert
|
- **`shell/install.sh` richtet weitere Maschinen ohne meinen Zugriff ein.** Idempotent, sichert
|
||||||
jede Datei nach `.vor-kalina-ci-<stempel>`, erkennt foot, qterminal, xfce4-terminal und xterm
|
jede Datei nach `.vor-kalina-ci-<stempel>`, erkennt foot, qterminal, xfce4-terminal und xterm
|
||||||
und prüft anschließend mit `zsh -n`, `foot --check-config` und `xrdb`-Query. Aufruf per
|
und prüft anschließend mit `zsh -n`, `foot --check-config` und `xrdb`-Query. Aufruf per
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|

|
||||||
|
|
||||||
# KALINA CI
|
# KALINA CI
|
||||||
|
|
||||||
Corporate Identity der KALINA als versioniertes Artefakt: eine Satzvorlage (CSS),
|
Corporate Identity der KALINA als versioniertes Artefakt: eine Satzvorlage (CSS),
|
||||||
@@ -6,10 +8,12 @@ die alle drei Wege bedient — und seit 1.3.0 dieselbe Farbwelt für Shell und T
|
|||||||
**Ein Dokument, das nach KALINA aussehen soll, nimmt diese Dateien — keine nachgebauten
|
**Ein Dokument, das nach KALINA aussehen soll, nimmt diese Dateien — keine nachgebauten
|
||||||
Farben, kein selbst gezeichnetes Logo.**
|
Farben, kein selbst gezeichnetes Logo.**
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
```
|
```
|
||||||
css/kalina-ci.css Satzvorlage: @page A4, Kopfleiste, Tabellen, Plakette, Fußlinie
|
css/kalina-ci.css Satzvorlage: @page A4, Kopfleiste, Tabellen, Plakette, Fußlinie
|
||||||
templates/ report.html · page.html · bild-mit-prompt.html
|
templates/ report.html · page.html · bild-mit-prompt.html
|
||||||
assets/ kalina-mark.svg · kalina-wordmark.svg · kalina-logo-combined.svg · favicon/
|
assets/ Marke als SVG (mark · wordmark · combined · favicon) + Vorschaubilder
|
||||||
scripts/stamp_existing_pdf.py fremdes PDF mit Deckblatt/Marke/Fußzeile versehen
|
scripts/stamp_existing_pdf.py fremdes PDF mit Deckblatt/Marke/Fußzeile versehen
|
||||||
shell/install.sh Shell-Prompt und Terminal-Palette auf einer Maschine einrichten
|
shell/install.sh Shell-Prompt und Terminal-Palette auf einer Maschine einrichten
|
||||||
shell/prompt.zsh zsh-Prompt als eigenständiges Modul (kein oh-my-zsh, kein p10k)
|
shell/prompt.zsh zsh-Prompt als eigenständiges Modul (kein oh-my-zsh, kein p10k)
|
||||||
@@ -51,6 +55,14 @@ Prompt, Terminal-Palette, ein Skript für beides.
|
|||||||
└─ ❯
|
└─ ❯
|
||||||
```
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
> **zsh ist Pflicht.** Der Prompt ist ein zsh-Modul; in bash passiert nichts. Das Skript
|
||||||
|
> installiert zsh selbst — `apt-get`, `dnf`, `pacman`, `zypper` oder `apk`, je nach System.
|
||||||
|
> Fehlt der Paketmanager oder verlangt `sudo` ein Passwort, **bricht der Shell-Teil ab**, nennt
|
||||||
|
> den genauen Befehl und lässt `~/.zshrc` unangetastet: lieber kein Prompt als ein stummer.
|
||||||
|
> Danach einmal neu einloggen (oder `exec zsh`), sonst greift die Login-Shell-Änderung nicht.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSLo install.sh https://gitea.m-m.bio/mm/kalina-ci/raw/branch/main/shell/install.sh
|
curl -fsSLo install.sh https://gitea.m-m.bio/mm/kalina-ci/raw/branch/main/shell/install.sh
|
||||||
bash install.sh --dry-run # zeigt, was passieren würde
|
bash install.sh --dry-run # zeigt, was passieren würde
|
||||||
@@ -59,10 +71,32 @@ bash install.sh # führt es aus
|
|||||||
|
|
||||||
Kein Token nötig — das Repo ist öffentlich lesbar. Das Skript ist idempotent, sichert jede
|
Kein Token nötig — das Repo ist öffentlich lesbar. Das Skript ist idempotent, sichert jede
|
||||||
Datei nach `.vor-kalina-ci-<stempel>` und erkennt **foot**, **qterminal**, **xfce4-terminal**
|
Datei nach `.vor-kalina-ci-<stempel>` und erkennt **foot**, **qterminal**, **xfce4-terminal**
|
||||||
und **xterm**; zsh installiert es über den vorhandenen Paketmanager. Schalter:
|
und **xterm**. Schalter:
|
||||||
`--shell-only`, `--terminal-only`, `--no-chsh`. Details und die Fallen beim Ausrollen stehen in
|
`--shell-only`, `--terminal-only`, `--no-chsh`. Details und die Fallen beim Ausrollen stehen in
|
||||||
[`shell/README.md`](shell/README.md).
|
[`shell/README.md`](shell/README.md).
|
||||||
|
|
||||||
|
### Ubuntu 26 und Wayland
|
||||||
|
|
||||||
|
Ubuntu 26.04 bringt GNOME 50 und damit **Ptyxis** als Standard-Terminal: Wayland-nativ, ohne
|
||||||
|
X11-Rueckfall. Der Prompt laeuft dort unveraendert (zsh ist in Ubuntu dabei), die Palette kommt
|
||||||
|
als Datei ins Benutzerverzeichnis — kein `sudo`, kein Paket, kein Kompilieren:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
Danach in Ptyxis: **Einstellungen → Aussehen → Palette „Kalina CI"** (gegebenenfalls
|
||||||
|
„Alle Paletten anzeigen"). `install.sh` macht beides — Datei ablegen und die Palette am Profil
|
||||||
|
eintragen (dconf-Schluessel `org.gnome.Ptyxis.Profile:…/palette`), samt `DejaVu Sans Mono 12`.
|
||||||
|
Gibt es noch kein Profil, sagt es das und nennt den Weg von Hand.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Gemessen an einem echten Wayland-Screenshot (Ptyxis 50.1, VTE 0.84): 74,9 % der Flaeche
|
||||||
|
`#0B0F14`, 11,9 % Titelbar `#0E131A`, ANSI-Rot und -Gruen innerhalb 2/255 der Vorgabe.
|
||||||
|
|
||||||
## Wie Agenten das nutzen
|
## Wie Agenten das nutzen
|
||||||
|
|
||||||
Zwei Wege, gleicher Inhalt:
|
Zwei Wege, gleicher Inhalt:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name: kalina-ci
|
name: kalina-ci
|
||||||
description: Use when a PDF, page or slide must carry the KALINA corporate identity. One CSS, one CLI, one source.
|
description: Use when a PDF, page or slide must carry the KALINA corporate identity. One CSS, one CLI, one source.
|
||||||
metadata:
|
metadata:
|
||||||
version: "1.3.0"
|
version: "1.3.2"
|
||||||
stand: "2026-11-02"
|
stand: "2026-11-02"
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -164,8 +164,17 @@ curl -fsSLo install.sh https://gitea.m-m.bio/mm/kalina-ci/raw/branch/main/shell/
|
|||||||
bash install.sh --dry-run && bash install.sh
|
bash install.sh --dry-run && bash install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Das Skript ist idempotent, sichert jede Datei und erkennt foot, qterminal, xfce4-terminal
|
**zsh ist Pflicht** — der Prompt ist ein zsh-Modul. Das Skript installiert zsh bei Bedarf
|
||||||
sowie xterm. Die Paletten sind gemessen, nicht geraten — die drei Fallen (qtermwidget6
|
selbst; kann es das nicht (kein Paketmanager, `sudo` ohne Passwort), bricht der Shell-Teil mit
|
||||||
|
Exit 1 ab und nennt den Befehl, statt einen wirkungslosen `~/.zshrc`-Eintrag zu hinterlassen.
|
||||||
|
Danach `exec zsh` oder neu einloggen, sonst greift die Login-Shell nicht.
|
||||||
|
|
||||||
|
Das Skript ist idempotent, sichert jede Datei und erkennt foot, ptyxis, qterminal,
|
||||||
|
xfce4-terminal sowie xterm. **Ubuntu 26** bringt GNOME 50 und damit **Ptyxis** als
|
||||||
|
Standard-Terminal (Wayland): Palette als
|
||||||
|
`~/.local/share/org.gnome.Ptyxis/palettes/KalinaCI.palette` ablegen und per
|
||||||
|
`gsettings set "org.gnome.Ptyxis.Profile:/org/gnome/Ptyxis/Profiles/<uuid>/" palette "KalinaCI"`
|
||||||
|
am Profil eintragen — die Datei allein genuegt nicht. Die Paletten sind gemessen, nicht geraten — die drei Fallen (qtermwidget6
|
||||||
kennt kein Benutzerverzeichnis, xfconf überstimmt `terminalrc`, foot will `[colors-dark]`)
|
kennt kein Benutzerverzeichnis, xfconf überstimmt `terminalrc`, foot will `[colors-dark]`)
|
||||||
stehen in `shell/README.md`.
|
stehen in `shell/README.md`.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
# Vorschaubilder
|
||||||
|
|
||||||
|
Die Bilder auf der Startseite sind **erzeugt, nicht gemalt**. Wer sie erneuert, baut sie neu —
|
||||||
|
und prüft dabei die Farben, statt sie zu behaupten.
|
||||||
|
|
||||||
|
## `vorschau.png` (1200 × 630)
|
||||||
|
|
||||||
|
Zusammengesetzt aus zwei echten Erzeugnissen dieses Repos:
|
||||||
|
|
||||||
|
1. **Deckblatt** — `templates/report.html` mit ausgefüllten Platzhaltern, gebaut über
|
||||||
|
`tools/kalina-pdf build bericht.html -o bericht.pdf` (die Prüfung muss grün sein), dann
|
||||||
|
`pdftoppm -png -r 140 -f 1 -l 1 bericht.pdf ber`.
|
||||||
|
2. **Terminal** — ein echter `qterminal` mit dem CI-Schema auf einem eigenen Display:
|
||||||
|
`Xvfb :77`, `XDG_DATA_DIRS=$HOME/.local/share/qterminal-ci:…`, Fenster per `xdotool`
|
||||||
|
beschriften, `xwd` dumpen, die 20 px Menüleiste oben abschneiden.
|
||||||
|
|
||||||
|
Danach beide Bilder in ein HTML im Maß 1200 × 630 px setzen (Grund `#0B0F14`, Wortmarke
|
||||||
|
`assets/kalina-wordmark.svg`, Fußlinie mit den Token-Werten) und über WeasyPrint rendern:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
weasyprint vorschau.html vorschau.pdf && pdftoppm -png -r 96 vorschau.pdf v
|
||||||
|
```
|
||||||
|
|
||||||
|
## `vorschau-shell.png` (880 px breit)
|
||||||
|
|
||||||
|
Nur das Terminal-Bild, gleicher Weg. Gezeigt wird der Prompt aus `shell/prompt.zsh` mit dem
|
||||||
|
Zeitsegment (dauert eine Eingabe ≥ 2 s, erscheint `· 2.4s`).
|
||||||
|
|
||||||
|
## `logo-platte.png`
|
||||||
|
|
||||||
|
`assets/logo.png` auf `#F5F5EF` gesetzt (`-trim`, 22 px Rand). Nötig, weil die Marke in Tinte
|
||||||
|
gezeichnet ist und auf einem dunklen Theme sonst verschwindet — die Platte trägt sie auf beiden.
|
||||||
|
|
||||||
|
## Gegenprobe
|
||||||
|
|
||||||
|
Nach dem Erzeugen nicht auf das Auge verlassen, sondern zählen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
convert vorschau-shell.png -format %c -depth 8 histogram:info:- | sort -rn | head -3
|
||||||
|
```
|
||||||
|
|
||||||
|
Der Grund muss `#0B0F14` sein (über 85 % der Fläche), der Text `#F5F5EF`, Rot `#C1121F`
|
||||||
|
beziehungsweise `#E0454F` nur als Akzent. Erscheint Weiß oder Schwarz als häufigste Farbe,
|
||||||
|
ist die Palette nicht geladen — dann nicht abschneiden, sondern die Ursache suchen.
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 144 KiB |
+54
-1
@@ -19,6 +19,31 @@ kein oh-my-zsh und kein powerlevel10k noetig.
|
|||||||
| Steel | `#3A4250` | Linien |
|
| Steel | `#3A4250` | Linien |
|
||||||
| Muted | `#8A94A2` | Hostname |
|
| 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
|
## Installation auf einer neuen Maschine
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@@ -38,7 +63,7 @@ und laesst sich in Teilen fahren:
|
|||||||
| `--dry-run` | nichts schreiben, nur anzeigen |
|
| `--dry-run` | nichts schreiben, nur anzeigen |
|
||||||
| `--shell-only` | nur zsh + Prompt |
|
| `--shell-only` | nur zsh + Prompt |
|
||||||
| `--terminal-only` | nur Terminal-Palette |
|
| `--terminal-only` | nur Terminal-Palette |
|
||||||
| `--no-chsh` | Login-Shell nicht umstellen |
|
| `--no-chsh` | Login-Shell nicht umstellen (Prompt bleibt, bis du `zsh` startest) |
|
||||||
|
|
||||||
Erkannt und eingerichtet werden: **foot** (`~/.config/foot/foot.ini`,
|
Erkannt und eingerichtet werden: **foot** (`~/.config/foot/foot.ini`,
|
||||||
`[colors-dark]`), **qterminal** (`~/.local/share/qterminal-ci/…/KalinaCI.colorscheme`
|
`[colors-dark]`), **qterminal** (`~/.local/share/qterminal-ci/…/KalinaCI.colorscheme`
|
||||||
@@ -47,6 +72,29 @@ weil qtermwidget6 nur `XDG_DATA_DIRS` durchsucht), **xfce4-terminal**
|
|||||||
(`~/.config/xfce4/terminal/terminalrc` **und** `xfconf-query`, sonst gewinnt
|
(`~/.config/xfce4/terminal/terminalrc` **und** `xfconf-query`, sonst gewinnt
|
||||||
das GTK-Theme) sowie **xterm** (`~/.Xresources`, aktiv nach `xrdb -merge`).
|
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
|
## Schalter im Prompt
|
||||||
|
|
||||||
| Variable | Wirkung |
|
| Variable | Wirkung |
|
||||||
@@ -64,5 +112,10 @@ das GTK-Theme) sowie **xterm** (`~/.Xresources`, aktiv nach `xrdb -merge`).
|
|||||||
- **p10k wird abgeloest, nicht umgef aerbt.** Wer `~/.p10k.zsh` behaelt, muss
|
- **p10k wird abgeloest, nicht umgef aerbt.** Wer `~/.p10k.zsh` behaelt, muss
|
||||||
`ZSH_THEME=""` setzen und die Instant-Prompt-Zeilen samt `fi` auskommentieren —
|
`ZSH_THEME=""` setzen und die Instant-Prompt-Zeilen samt `fi` auskommentieren —
|
||||||
sonst startet jede Shell mit `parse error near 'fi'`.
|
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
|
- **Login-Shell-Wechsel:** nicht-interaktive zsh-Aufrufe (`ssh host '…'`) brechen bei
|
||||||
leerem Glob ab, bash nicht. Das Modul setzt deshalb `no_nomatch` in `~/.zshenv`.
|
leerem Glob ab, bash nicht. Das Modul setzt deshalb `no_nomatch` in `~/.zshenv`.
|
||||||
+137
-11
@@ -10,6 +10,12 @@
|
|||||||
# ./install.sh --terminal-only # nur Terminal-Palette
|
# ./install.sh --terminal-only # nur Terminal-Palette
|
||||||
# ./install.sh --no-chsh # Login-Shell nicht anfassen
|
# ./install.sh --no-chsh # Login-Shell nicht anfassen
|
||||||
#
|
#
|
||||||
|
# zsh ist Pflicht: der Prompt ist ein zsh-Modul, in bash wirkt er nicht. Fehlt zsh,
|
||||||
|
# installiert dieses Skript ihn selbst (apt-get, dnf, pacman, zypper, apk). Geht das
|
||||||
|
# nicht — kein Paketmanager oder sudo ohne Passwort — bricht der Shell-Teil ab und
|
||||||
|
# nennt den genauen Befehl zum Nachholen. Ein halb eingerichtetes ~/.zshrc hilft
|
||||||
|
# niemandem, deshalb lieber kein Prompt als ein stummer.
|
||||||
|
#
|
||||||
# Grundsaetze: jede Datei wird vorher gesichert (.vor-kalina-ci-<stempel>),
|
# Grundsaetze: jede Datei wird vorher gesichert (.vor-kalina-ci-<stempel>),
|
||||||
# jeder Block ist an einem Marker erkennbar und wird nicht doppelt geschrieben,
|
# jeder Block ist an einem Marker erkennbar und wird nicht doppelt geschrieben,
|
||||||
# jede veraenderte Datei wird anschliessend mit dem passenden Pruefer getestet.
|
# jede veraenderte Datei wird anschliessend mit dem passenden Pruefer getestet.
|
||||||
@@ -26,6 +32,7 @@ SRC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||||||
RAW="${KALINA_CI_RAW:-https://gitea.m-m.bio/mm/kalina-ci/raw/branch/main/shell}"
|
RAW="${KALINA_CI_RAW:-https://gitea.m-m.bio/mm/kalina-ci/raw/branch/main/shell}"
|
||||||
|
|
||||||
DRY=0; DO_SHELL=1; DO_TERM=1; DO_CHSH=1
|
DRY=0; DO_SHELL=1; DO_TERM=1; DO_CHSH=1
|
||||||
|
ZSH_OK=0 # 1 = zsh vorhanden oder installiert; 0 = Prompt kann nicht greifen
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
--dry-run) DRY=1 ;;
|
--dry-run) DRY=1 ;;
|
||||||
@@ -58,6 +65,11 @@ fi
|
|||||||
|
|
||||||
install_zsh() {
|
install_zsh() {
|
||||||
command -v zsh >/dev/null && { ok "zsh vorhanden: $(zsh --version)"; return 0; }
|
command -v zsh >/dev/null && { ok "zsh vorhanden: $(zsh --version)"; return 0; }
|
||||||
|
if [ "$DRY" = 1 ]; then
|
||||||
|
say " zsh fehlt — ein echter Lauf wuerde ihn jetzt installieren (ohne zsh kein Prompt)."
|
||||||
|
else
|
||||||
|
say " zsh fehlt — wird jetzt installiert (ohne zsh kein Prompt)."
|
||||||
|
fi
|
||||||
local pm=""
|
local pm=""
|
||||||
for c in apt-get dnf pacman zypper apk; do command -v "$c" >/dev/null && pm="$c" && break; done
|
for c in apt-get dnf pacman zypper apk; do command -v "$c" >/dev/null && pm="$c" && break; done
|
||||||
[ -n "$pm" ] || { warn "kein bekannter Paketmanager — zsh bitte von Hand installieren"; return 1; }
|
[ -n "$pm" ] || { warn "kein bekannter Paketmanager — zsh bitte von Hand installieren"; return 1; }
|
||||||
@@ -76,10 +88,15 @@ install_zsh() {
|
|||||||
apt-get) run $SUDO env DEBIAN_FRONTEND=noninteractive apt-get install -y zsh ;;
|
apt-get) run $SUDO env DEBIAN_FRONTEND=noninteractive apt-get install -y zsh ;;
|
||||||
dnf) run $SUDO dnf install -y zsh ;;
|
dnf) run $SUDO dnf install -y zsh ;;
|
||||||
pacman) run $SUDO pacman -S --needed --noconfirm zsh ;;
|
pacman) run $SUDO pacman -S --needed --noconfirm zsh ;;
|
||||||
zypper) run $SUDO zypper --non-interactive install zsh ;;
|
zypper) $SUDO zypper --non-interactive install zsh ;;
|
||||||
apk) run $SUDO apk add zsh ;;
|
apk) $SUDO apk add zsh ;;
|
||||||
esac
|
esac
|
||||||
command -v zsh >/dev/null && ok "zsh installiert: $(zsh --version)" || warn "zsh weiterhin nicht auffindbar"
|
if command -v zsh >/dev/null; then
|
||||||
|
ok "zsh installiert: $(zsh --version)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
warn "zsh ist nach der Installation nicht auffindbar — PATH pruefen"
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Block mit Markern an eine Datei anhaengen (nicht doppelt)
|
# Block mit Markern an eine Datei anhaengen (nicht doppelt)
|
||||||
@@ -101,7 +118,17 @@ append_block() {
|
|||||||
# ------------------------------------------------------------------ Shell
|
# ------------------------------------------------------------------ Shell
|
||||||
do_shell() {
|
do_shell() {
|
||||||
step "Shell (zsh + Kalina-CI-Prompt)"
|
step "Shell (zsh + Kalina-CI-Prompt)"
|
||||||
install_zsh || true
|
|
||||||
|
# Ohne zsh gibt es keinen Prompt: das Modul ist zsh-Syntax in ~/.zshrc. Wer in bash
|
||||||
|
# sitzt, sieht davon nichts — also erst zsh, dann alles andere.
|
||||||
|
if ! command -v zsh >/dev/null && [ "$DRY" = 1 ]; then
|
||||||
|
install_zsh || true
|
||||||
|
warn "Trockenlauf: ein echter Lauf wuerde zsh zuerst installieren, sonst gaebe es keinen Prompt"
|
||||||
|
elif ! install_zsh; then
|
||||||
|
warn "Shell-Teil abgebrochen — ohne zsh wirkt der Prompt nicht (kein ~/.zshrc-Eintrag geschrieben)."
|
||||||
|
warn "zsh nachholen (Befehl oben), dann dieses Skript erneut starten."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
run mkdir -p "$CONF_DIR"
|
run mkdir -p "$CONF_DIR"
|
||||||
if [ -f "$SRC_DIR/prompt.zsh" ]; then
|
if [ -f "$SRC_DIR/prompt.zsh" ]; then
|
||||||
@@ -170,13 +197,26 @@ RC
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Login-Shell
|
# Login-Shell
|
||||||
local cur; cur="$(getent passwd "$(id -un)" | cut -d: -f7)"
|
local cur zshbin; cur="$(getent passwd "$(id -un)" | cut -d: -f7)"
|
||||||
if [ "$cur" = "$(command -v zsh 2>/dev/null)" ]; then
|
zshbin="$(command -v zsh 2>/dev/null)"
|
||||||
|
if [ -z "$zshbin" ]; then
|
||||||
|
warn "zsh nicht gefunden — Login-Shell bleibt $cur, Prompt erscheint nicht"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
ZSH_OK=1
|
||||||
|
if [ "$cur" = "$zshbin" ]; then
|
||||||
ok "Login-Shell ist bereits zsh"
|
ok "Login-Shell ist bereits zsh"
|
||||||
elif [ "$DO_CHSH" = 0 ]; then
|
elif [ "$DO_CHSH" = 0 ]; then
|
||||||
warn "Login-Shell bleibt $cur (--no-chsh); Start mit 'exec zsh' oder 'chsh -s $(command -v zsh)'"
|
warn "Login-Shell bleibt $cur (--no-chsh). Bis du zsh startest, siehst du den Prompt nicht:"
|
||||||
|
say " exec zsh # nur diese Sitzung"
|
||||||
|
say " chsh -s $zshbin # dauerhaft"
|
||||||
else
|
else
|
||||||
run $SUDO chsh -s "$(command -v zsh)" "$(id -un)" && ok "Login-Shell auf zsh gestellt (greift beim naechsten Login)"
|
if run $SUDO chsh -s "$zshbin" "$(id -un)"; then
|
||||||
|
ok "Login-Shell auf zsh gestellt — greift beim naechsten Login (nicht in dieser Sitzung)"
|
||||||
|
else
|
||||||
|
warn "chsh fehlgeschlagen; Login-Shell bleibt $cur. Von Hand: chsh -s $zshbin"
|
||||||
|
warn "Sofort testen: exec zsh"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,12 +233,88 @@ do_terminal() {
|
|||||||
chosen=xfce4-terminal; xfce_setup
|
chosen=xfce4-terminal; xfce_setup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Ptyxis ist seit Ubuntu 26.04 das Standard-Terminal (GNOME 50, Wayland). Es wird
|
||||||
|
# zusaetzlich eingerichtet, weil es neben foot/qterminal liegen kann.
|
||||||
|
if command -v ptyxis >/dev/null && [ "$chosen" != ptyxis ]; then
|
||||||
|
chosen="${chosen:-ptyxis}"; ptyxis_setup
|
||||||
|
fi
|
||||||
|
|
||||||
# xterm-Ressourcen zusaetzlich, wenn xterm daneben installiert ist.
|
# xterm-Ressourcen zusaetzlich, wenn xterm daneben installiert ist.
|
||||||
if command -v xterm >/dev/null && [ "$chosen" != xterm ]; then
|
if command -v xterm >/dev/null && [ "$chosen" != xterm ]; then
|
||||||
chosen="${chosen:-xterm}"; xterm_setup
|
chosen="${chosen:-xterm}"; xterm_setup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$chosen" ] || warn "kein bekanntes Terminal gefunden (foot, qterminal, xfce4-terminal, xterm)"
|
[ -n "$chosen" ] || warn "kein bekanntes Terminal gefunden (foot, ptyxis, qterminal, xfce4-terminal, xterm)"
|
||||||
|
}
|
||||||
|
|
||||||
|
ptyxis_setup() {
|
||||||
|
local dir="$HOME/.local/share/org.gnome.Ptyxis/palettes"
|
||||||
|
local file="$dir/KalinaCI.palette"
|
||||||
|
|
||||||
|
if [ -f "$file" ] && grep -qF "Name=Kalina CI" "$file"; then
|
||||||
|
ok "ptyxis: Palette liegt schon in ~/.local/share/org.gnome.Ptyxis/palettes"
|
||||||
|
else
|
||||||
|
[ -d "$dir" ] || run mkdir -p "$dir"
|
||||||
|
backup "$file"
|
||||||
|
if [ "$DRY" = 0 ]; then
|
||||||
|
cat > "$file" <<'PTYXIS'
|
||||||
|
# Kalina CI — Palette fuer Ptyxis (Ubuntu 26 Standard-Terminal, Wayland).
|
||||||
|
# Kein sudo noetig: diese Datei im Benutzerverzeichnis genuegt.
|
||||||
|
# Quelle im Repo: shell/palettes/KalinaCI.palette — bitte gleich halten.
|
||||||
|
[Palette]
|
||||||
|
Name=Kalina CI
|
||||||
|
Primary=false
|
||||||
|
|
||||||
|
Foreground=#F5F5EF
|
||||||
|
Background=#0B0F14
|
||||||
|
Cursor=#C1121F
|
||||||
|
CursorForeground=#0B0F14
|
||||||
|
TitlebarBackground=#0E131A
|
||||||
|
TitlebarForeground=#8A94A2
|
||||||
|
|
||||||
|
Color0=#1A212A
|
||||||
|
Color1=#E0454F
|
||||||
|
Color2=#7FA88C
|
||||||
|
Color3=#C7A46B
|
||||||
|
Color4=#7E93AD
|
||||||
|
Color5=#BE8FA0
|
||||||
|
Color6=#8FB3B3
|
||||||
|
Color7=#F5F5EF
|
||||||
|
Color8=#5C6675
|
||||||
|
Color9=#FF6B75
|
||||||
|
Color10=#9CC2A8
|
||||||
|
Color11=#E0C08A
|
||||||
|
Color12=#A3B6CB
|
||||||
|
Color13=#D3A8B8
|
||||||
|
Color14=#AECBCB
|
||||||
|
Color15=#FFFFFF
|
||||||
|
PTYXIS
|
||||||
|
fi
|
||||||
|
ok "ptyxis: KalinaCI.palette geschrieben"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Palette muss noch am Profil haengen; das ist ein dconf-Schluessel, keine Datei.
|
||||||
|
if ! command -v gsettings >/dev/null; then
|
||||||
|
warn "ptyxis: gsettings fehlt — Palette von Hand waehlen: Einstellungen -> Aussehen -> Palette"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
local uuids uuid
|
||||||
|
# gsettings liefert '@as []' als leere Liste — das darf kein Profilpfad werden.
|
||||||
|
uuids="$(gsettings get org.gnome.Ptyxis profile-uuids 2>/dev/null \
|
||||||
|
| sed "s/^@as //; s/[][]//g; s/[ ,]//g; s/'//g")"
|
||||||
|
if [ -z "$uuids" ]; then
|
||||||
|
warn "ptyxis: noch kein Profil vorhanden — Ptyxis einmal oeffnen, dann dieses Skript erneut starten"
|
||||||
|
say " Einstellungen -> Aussehen -> Palette 'Kalina CI' (ggf. 'Alle Paletten anzeigen')"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
for uuid in $uuids; do
|
||||||
|
printf "%s" "$uuid" | grep -qE "^[0-9a-f]{32}$" || { warn "ptyxis: unerwartete Profilkennung '$uuid' — Palette von Hand waehlen"; continue; }
|
||||||
|
run gsettings set "org.gnome.Ptyxis.Profile:/org/gnome/Ptyxis/Profiles/$uuid/" palette "KalinaCI" \
|
||||||
|
&& ok "ptyxis: Palette am Profil ${uuid:0:8} gesetzt"
|
||||||
|
done
|
||||||
|
run gsettings set org.gnome.Ptyxis use-system-font false
|
||||||
|
run gsettings set org.gnome.Ptyxis font-name "DejaVu Sans Mono 12"
|
||||||
|
ok "ptyxis: DejaVu Sans Mono 12 (Systemschrift aus)"
|
||||||
}
|
}
|
||||||
|
|
||||||
foot_setup() {
|
foot_setup() {
|
||||||
@@ -446,10 +562,20 @@ XRES
|
|||||||
say "Kalina CI — Installation auf $(hostname), Ziel $HOME"
|
say "Kalina CI — Installation auf $(hostname), Ziel $HOME"
|
||||||
[ "$DRY" = 1 ] && say "(Probelauf: es wird nichts geschrieben)"
|
[ "$DRY" = 1 ] && say "(Probelauf: es wird nichts geschrieben)"
|
||||||
|
|
||||||
[ "$DO_SHELL" = 1 ] && do_shell
|
RC=0
|
||||||
|
[ "$DO_SHELL" = 1 ] && { do_shell || RC=1; }
|
||||||
[ "$DO_TERM" = 1 ] && do_terminal
|
[ "$DO_TERM" = 1 ] && do_terminal
|
||||||
|
|
||||||
|
say ""
|
||||||
step "Fertig"
|
step "Fertig"
|
||||||
say " Prompt pruefen: zsh -i (oder neue Terminal-Sitzung)"
|
if [ "$RC" = 0 ] && { [ "$DO_SHELL" = 0 ] || [ "$ZSH_OK" = 1 ]; }; then
|
||||||
|
ok "neu starten: exec zsh — oder einmal neu einloggen (Login-Shell greift erst dann)"
|
||||||
|
elif [ "$RC" = 0 ]; then
|
||||||
|
warn "ohne zsh kein Prompt — im echten Lauf bricht der Shell-Teil hier ab"
|
||||||
|
else
|
||||||
|
warn "mit Fehlern beendet (Exit 1) — oben steht, was fehlt; erneut starten, sobald es da ist"
|
||||||
|
fi
|
||||||
|
say " Prompt pruefen: zsh -i"
|
||||||
say " Abschalten: KALINA_CI_PROMPT=0 zsh -i"
|
say " Abschalten: KALINA_CI_PROMPT=0 zsh -i"
|
||||||
say " Palette pruefen: Terminal neu starten; nach environment.d-Aenderung einmal neu anmelden"
|
say " Palette pruefen: Terminal neu starten; nach environment.d-Aenderung einmal neu anmelden"
|
||||||
|
exit "$RC"
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
[Palette]
|
||||||
|
Name=Kalina CI
|
||||||
|
Primary=false
|
||||||
|
|
||||||
|
Foreground=#F5F5EF
|
||||||
|
Background=#0B0F14
|
||||||
|
Cursor=#C1121F
|
||||||
|
CursorForeground=#0B0F14
|
||||||
|
TitlebarBackground=#0E131A
|
||||||
|
TitlebarForeground=#8A94A2
|
||||||
|
|
||||||
|
Color0=#1A212A
|
||||||
|
Color1=#E0454F
|
||||||
|
Color2=#7FA88C
|
||||||
|
Color3=#C7A46B
|
||||||
|
Color4=#7E93AD
|
||||||
|
Color5=#BE8FA0
|
||||||
|
Color6=#8FB3B3
|
||||||
|
Color7=#F5F5EF
|
||||||
|
Color8=#5C6675
|
||||||
|
Color9=#FF6B75
|
||||||
|
Color10=#9CC2A8
|
||||||
|
Color11=#E0C08A
|
||||||
|
Color12=#A3B6CB
|
||||||
|
Color13=#D3A8B8
|
||||||
|
Color14=#AECBCB
|
||||||
|
Color15=#FFFFFF
|
||||||
Reference in new issue
Block a user