From 78d4ed333c985032d4a5a229577d12c19b22497e Mon Sep 17 00:00:00 2001 From: Kalina Date: Mon, 2 Nov 2026 19:22:46 +0100 Subject: [PATCH] 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). --- CHANGELOG.md | 13 ++++++ README.md | 22 +++++++++ SKILL.md | 10 ++-- assets/vorschau-ptyxis.png | Bin 0 -> 55111 bytes shell/README.md | 28 +++++++++++ shell/install.sh | 80 +++++++++++++++++++++++++++++++- shell/palettes/KalinaCI.palette | 27 +++++++++++ 7 files changed, 175 insertions(+), 5 deletions(-) create mode 100644 assets/vorschau-ptyxis.png create mode 100644 shell/palettes/KalinaCI.palette diff --git a/CHANGELOG.md b/CHANGELOG.md index 50287f1..ec86a07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,19 @@ 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 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 diff --git a/README.md b/README.md index 8317b87..42ac084 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,28 @@ und **xterm**. Schalter: `--shell-only`, `--terminal-only`, `--no-chsh`. Details und die Fallen beim Ausrollen stehen in [`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. + +![Ptyxis unter Wayland mit der CI-Palette](assets/vorschau-ptyxis.png) + +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 Zwei Wege, gleicher Inhalt: diff --git a/SKILL.md b/SKILL.md index 8ab2b17..8f925b0 100644 --- a/SKILL.md +++ b/SKILL.md @@ -2,7 +2,7 @@ name: kalina-ci description: Use when a PDF, page or slide must carry the KALINA corporate identity. One CSS, one CLI, one source. metadata: - version: "1.3.1" + version: "1.3.2" stand: "2026-11-02" --- @@ -169,8 +169,12 @@ selbst; kann es das nicht (kein Paketmanager, `sudo` ohne Passwort), bricht der 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, qterminal, xfce4-terminal -sowie xterm. Die Paletten sind gemessen, nicht geraten — die drei Fallen (qtermwidget6 +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//" 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]`) stehen in `shell/README.md`. diff --git a/assets/vorschau-ptyxis.png b/assets/vorschau-ptyxis.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f99e8326caba667003c216c7cdec7c430f68fd GIT binary patch literal 55111 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 Rbwl7oOj!CuiJ-3E{{U2dAGiPj literal 0 HcmV?d00001 diff --git a/shell/README.md b/shell/README.md index d8977c6..83b44ee 100644 --- a/shell/README.md +++ b/shell/README.md @@ -72,6 +72,29 @@ 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 | @@ -89,5 +112,10 @@ das GTK-Theme) sowie **xterm** (`~/.Xresources`, aktiv nach `xrdb -merge`). - **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`. diff --git a/shell/install.sh b/shell/install.sh index f1db0b7..31ab682 100755 --- a/shell/install.sh +++ b/shell/install.sh @@ -233,12 +233,88 @@ do_terminal() { chosen=xfce4-terminal; xfce_setup 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. if command -v xterm >/dev/null && [ "$chosen" != xterm ]; then chosen="${chosen:-xterm}"; xterm_setup 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() { @@ -492,7 +568,7 @@ RC=0 say "" step "Fertig" -if [ "$RC" = 0 ] && [ "$ZSH_OK" = 1 ]; then +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" diff --git a/shell/palettes/KalinaCI.palette b/shell/palettes/KalinaCI.palette new file mode 100644 index 0000000..b0f00b3 --- /dev/null +++ b/shell/palettes/KalinaCI.palette @@ -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 -- 2.43.0