Initial commit — TANINUX (camel): management app + distro packaging
- app: GTK System Settings (tsettings) + Software Hub (thub) + TUI - distro/: camel.toml manifest + MANIFEST.md (Arch + [tanin] repo model) - packaging/: taninux, tanin-desktop (niri metapackage), tanin-greet, tanin-libadwaita, tanin-setup - docs/, data/, LICENSE (GPL-3.0-or-later) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
# TANINUX → eww: Akzent-Integration (Handoff)
|
||||
|
||||
**Für die Instanz, die an `~/eww` arbeitet.** Diese Datei ist der Vertrag, wie
|
||||
die eww-Bar ihren Akzent von der TANINUX-Appearance-App bekommt.
|
||||
|
||||
---
|
||||
|
||||
## TL;DR (Kurzanleitung)
|
||||
|
||||
1. **Lies** `~/.local/share/taninux/gui.json`.
|
||||
2. **Nimm** das Feld `accent_hex` (fertiger Hex-String, z. B. `#8aac8b`).
|
||||
3. **Setz** damit deine eww-Akzentvariablen (`$accent`, `$accent-dim`, die
|
||||
`$accent-08/14/22`-Washes) und mach `eww reload`.
|
||||
4. **Reagiere auf Änderungen**: watch die Datei (inotify) — TANINUX schreibt sie
|
||||
bei jedem Akzent-Wechsel neu.
|
||||
|
||||
Das war's. Der Rest hier ist Detail/Begründung.
|
||||
|
||||
---
|
||||
|
||||
## Quelle der Wahrheit
|
||||
|
||||
**Datei:** `~/.local/share/taninux/gui.json`
|
||||
(exakt: `$XDG_DATA_HOME/taninux/gui.json`, Fallback `~/.local/share/...`)
|
||||
|
||||
**Schema:**
|
||||
```json
|
||||
{
|
||||
"version": 1,
|
||||
"color_scheme": "dark",
|
||||
"accent": "take",
|
||||
"accent_hex": "#8aac8b",
|
||||
"accent_label": "Take · green"
|
||||
}
|
||||
```
|
||||
|
||||
| Feld | Bedeutung |
|
||||
|----------------|------------------------------------------------------------------|
|
||||
| `accent_hex` | **Das relevante Feld.** Fertiger Hex des gewählten Fuji-Akzents. |
|
||||
| `accent` | interner Key (`ume`/`shinkai`/`take`/`chikyu`/`beni`). |
|
||||
| `accent_label` | menschlicher Name, nur fürs Anzeigen. |
|
||||
| `color_scheme` | `system` / `light` / `dark` — **NICHT für deinen Akzent nötig**, siehe unten. |
|
||||
|
||||
Die Datei existiert erst, nachdem in TANINUX einmal ein Setting geändert wurde.
|
||||
Wenn sie fehlt: Default-Akzent `ume` / `#8f8aac` annehmen.
|
||||
|
||||
---
|
||||
|
||||
## Was du in eww damit machst
|
||||
|
||||
Deine `~/eww/eww.scss` hat oben den Variablenblock. Akzent-relevant sind:
|
||||
|
||||
```scss
|
||||
$accent: #a39ec4; // bright
|
||||
$accent-dim: #8f8aac; // muted ← entspricht direkt accent_hex
|
||||
$accent-08: rgba(163, 158, 196, 0.08);
|
||||
$accent-14: rgba(163, 158, 196, 0.14);
|
||||
$accent-22: rgba(163, 158, 196, 0.22);
|
||||
$acc-l: $accent-dim;
|
||||
```
|
||||
|
||||
`accent_hex` ist der **gedämpfte** Fuji-Ton (= dein bisheriges `$accent-dim`).
|
||||
Mapping-Vorschlag:
|
||||
|
||||
- `$accent-dim` = `accent_hex` (1:1)
|
||||
- `$accent` = `accent_hex` ~18 % Richtung Weiß aufgehellt (bright)
|
||||
- `$accent-08/14/22` = `rgba(R, G, B, 0.08/0.14/0.22)` aus den RGB von `accent_hex`
|
||||
(oder vom bright — wie es bei dir besser aussieht)
|
||||
|
||||
In SCSS kannst du das selbst ableiten, ohne die bright-Werte vorzuberechnen:
|
||||
```scss
|
||||
$accent-dim: #8aac8b; // = accent_hex aus gui.json
|
||||
$accent: lighten($accent-dim, 8%);
|
||||
$accent-08: rgba($accent-dim, 0.08);
|
||||
$accent-14: rgba($accent-dim, 0.14);
|
||||
$accent-22: rgba($accent-dim, 0.22);
|
||||
```
|
||||
Du musst also nur **eine Zeile** (`$accent-dim`) aus `gui.json` regenerieren.
|
||||
|
||||
### Die 5 Fuji-Akzente (falls du sie vorab kennen willst)
|
||||
|
||||
| key | label | accent_hex (dim) | bright (Referenz) |
|
||||
|-----------|------------------|------------------|-------------------|
|
||||
| `ume` | Ume · violet | `#8f8aac` | `#a39ec4` |
|
||||
| `shinkai` | Shinkai · blue | `#8a98ac` | `#9fabbb` |
|
||||
| `take` | Take · green | `#8aac8b` | `#9fbba0` |
|
||||
| `chikyu` | Chikyū · yellow | `#aca98a` | `#bbb89f` |
|
||||
| `beni` | Beni · red | `#ac8a8c` | `#bb9fa1` |
|
||||
|
||||
(Quelle der Hexes: `taninux/core/theme.py` — identisch zur TUI. `ume`-bright
|
||||
entspricht deinem aktuellen `$accent`.)
|
||||
|
||||
---
|
||||
|
||||
## Hell/Dunkel — NICHT dein Akzent-Job
|
||||
|
||||
Das globale Hell/Dunkel läuft über `gsettings org.gnome.desktop.interface
|
||||
color-scheme` (steht auf `prefer-dark`). TANINUX **steuert das nicht über
|
||||
gui.json** und fasst es bewusst nicht an. Dein eww-Hell/Dunkel (`.light`-Klasse +
|
||||
`-l`-Variablen) bleibt **vollständig deine Sache** — TANINUX mischt sich da nicht
|
||||
ein. `color_scheme` in der JSON ist nur informativ; ignorier es für den Akzent.
|
||||
|
||||
---
|
||||
|
||||
## Reload-Trigger — bitte abstimmen
|
||||
|
||||
TANINUX schreibt `gui.json` bei jeder Änderung, ruft aktuell aber **kein
|
||||
`eww reload`** auf. Zwei Optionen, einigt euch auf eine:
|
||||
|
||||
- **(A) eww-Seite watcht** `gui.json` (z. B. `inotifywait` / ein eww-`deflisten`
|
||||
/ kleines Script) und macht selbst `eww reload`. → empfohlen, hält eww autark.
|
||||
- **(B) TANINUX triggert** nach dem Schreiben `eww reload`. Sag Bescheid, dann
|
||||
baue ich das in den Appearance-`persist()` ein (best-effort, nur wenn eww läuft).
|
||||
|
||||
---
|
||||
|
||||
## Grenzen (wichtig)
|
||||
|
||||
- TANINUX fasst `~/eww/**` **nicht** an. Die scss-Verdrahtung machst du.
|
||||
- TANINUX besitzt zusätzlich `~/.config/gtk-4.0/libadwaita.css` (globaler
|
||||
GTK4/libadwaita-Akzent via `@define-color`) — das ist für **GTK-Apps**, nicht
|
||||
für eww. Nicht damit verwechseln; eww liest `gui.json`.
|
||||
Reference in New Issue
Block a user