Skip to content

Commit 97154aa

Browse files
authored
upload docs for extensions new api and image mannagement (#6)
1 parent e027bce commit 97154aa

22 files changed

Lines changed: 1081 additions & 40 deletions

docs/de/SUMMARY.md

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Ein plattformunabhangiges Systeminformations-Tool geschrieben in Rust.
44

5-
- **Version:** 0.2.0
5+
- ****Version:** 0.3.0
66
- **Lizenz:** MIT
77
- **Autor:** xscriptor
88
- **Repository:** github.com/xfetch-cli/xfetch
@@ -63,22 +63,34 @@ Ein plattformunabhangiges Systeminformations-Tool geschrieben in Rust.
6363
- Eigene Plugins schreiben
6464
- Plugin-API-Crate
6565

66-
6. [Anpassung](customization.md)
66+
6. [Erweiterungen](extensions.md)
67+
- Erweiterungsarchitektur im Uberblick
68+
- Konfiguration uber config_providers
69+
- JSON-Drahtprotokoll
70+
- Installation und CLI-Befehle
71+
- Offizielle Erweiterungen
72+
- config-roulette
73+
- layout-override
74+
- Eigene Erweiterungen schreiben
75+
76+
7. [Anpassung](customization.md)
6777
- ASCII- und Bildlogos
78+
- Bildgrosse und Positionierung
79+
- Kitty Terminal Bild-Rendering
6880
- Logo-Animationsstile
6981
- Nerd Font Icons
7082
- ANSI-Farbanpassung
7183
- Paletten-Anzeigestile
7284
- Preset-Konfigurationen
7385

74-
7. [Fortgeschrittene Nutzung](advanced-usage.md)
86+
8. [Fortgeschrittene Nutzung](advanced-usage.md)
7587
- Benchmark-Modus
7688
- Cache-System
7789
- Datenschutzeinstellungen
7890
- Plattformubergreifendes Verhalten
7991
- Leistungsoptimierung
8092

81-
8. [Presets-Referenz](presets.md)
93+
9. [Presets-Referenz](presets.md)
8294
- Layout-Presets
8395
- Showcase-Presets
8496
- Plugin-Presets
@@ -95,7 +107,7 @@ Ein plattformunabhangiges Systeminformations-Tool geschrieben in Rust.
95107
- Aktionen (liste, suche, info, installiere)
96108
- Registry und benutzerdefinierte Registries
97109

98-
11. [Mitwirken](contributing.md)
110+
12. [Mitwirken](contributing.md)
99111
- Aus dem Quellcode bauen
100112
- Projektstruktur
101113
- Plugin-Entwicklungsleitfaden
@@ -107,24 +119,24 @@ Ein plattformunabhangiges Systeminformations-Tool geschrieben in Rust.
107119
- Aktuelle Phase (Tests, erweiterte Funktionen)
108120
- Zukunftsplane
109121

110-
13. [Sicherheit](security.md)
122+
14. [Sicherheit](security.md)
111123
- Melden von Sicherheitslucken
112124
- Sicherheitsempfehlungen
113125
- Unterstutzte Versionen
114126

115-
14. [Support](support.md)
127+
15. [Support](support.md)
116128
- Hilfe erhalten
117129
- Vor dem Offnen eines Issues
118130
- Reaktionserwartungen
119131

120-
15. [Anderungsprotokoll](changelog.md)
132+
16. [Anderungsprotokoll](changelog.md)
121133
- Versionsgeschichte
122134
- Phasenweises Anderungsprotokoll
123135

124-
16. [Verhaltenskodex](code-of-conduct.md)
136+
17. [Verhaltenskodex](code-of-conduct.md)
125137
- Unsere Standards
126138
- Inakzeptables Verhalten
127139
- Melden
128140

129-
17. [Lizenz](license.md)
141+
18. [Lizenz](license.md)
130142
- MIT-Lizenzbestimmungen

docs/de/changelog.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# Anderungsprotokoll
22

3+
## v0.3.0 · Bild-Rendering und Erweiterungen · 2026-07-25
4+
5+
- **Kitty Bild-Rendering uberarbeitet:** `logo_kitty` Toggle (natives Protokoll vs Half-Block), `logo_gap` fur konfigurierbaren Bild-Text-Abstand, `logo_width`/`logo_height` fur explizite Grose, und auto-responsive Breite (28% des Terminals, clamp 12–42 Spalten)
6+
- **Cursor-Positionierung korrigiert:** `MoveUp`/`MoveToColumn` durch `SavePosition`/`RestorePosition` ersetzt fur korrektes Verhalten bei allen Bildprotokollen
7+
- **Stacked-Layout korrigiert:** `print_stacked_output()` fur reine Bildlogos (ohne ASCII-Text) repariert
8+
- **Erweiterungs-API:** `api/crates/extension-api/` erstellt — `ConfigProviderRequest`/`ConfigProviderResponse` Protokoll, `config_providers[]` Feld, stdin/stdout JSON-Kommunikation
9+
- **config-roulette Erweiterung:** Wahlt zufallige oder tagliche Konfiguration aus einer JSON-Routenliste, unterstutzt 100+ Routen
10+
- **layout-override Erweiterung:** Erzwingt Layout und/oder Module beim Konfigurationsladen
11+
- **Erweiterungs-CLI:** Befehle `xfetch extension install/list/remove` hinzugefugt
12+
- **100 bildbasierte Konfigurationen** fur config-roulette mit `logo_gap: 3` und `logo_kitty: true`
13+
314
## Phase 0 · Grundlage und Kern
415

516
- Rust-Projekt mit Abhangigkeiten initialisieren

docs/de/configuration.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,17 @@ JSONC erweitert standard JSON um C-Style (`//`) und C++-Style (`/* */`) Kommenta
7777
| `palette_style` | `string` | `"squares"` | Paletten-Anzeigestil |
7878
| `logo_path` | `string` oder `null` | `null` | Pfad zu einer benutzerdefinierten Logodatei |
7979
| `ascii` | `string` oder `null` | `null` | Pfad zu einer ASCII-Kunst-Datei (Alternative zu logo_path) |
80+
| `logo_width` | `number` oder `null` | `null` | Breitenbeschränkung fur Bildlogos (in Terminal-Spalten, automatisch berechnet wenn nicht gesetzt) |
81+
| `logo_height` | `number` oder `null` | `null` | Hohenbeschränkung fur Bildlogos (in Terminal-Zeilen) |
82+
| `logo_gap` | `number` oder `null` | `12` | Abstand zwischen dem Logo/Bild und dem Infotext (in Spalten) |
83+
| `logo_kitty` | `boolean` oder `null` | `true` (in Kitty) | Kitty natives Bildprotokoll verwenden (`true`) oder Half-Block-Rendering (`false`). Half-Block hat geringere Auflosung, vermeidet aber Layout-Probleme |
8084
| `header_icons` | `array` oder `null` | `null` | Icons fur den oberen Rand (Pac-Man-Layout) |
8185
| `footer_text` | `string` oder `null` | `null` | Text fur den unteren Rand (Pac-Man-Layout) |
8286
| `disable_ip_fetching` | `boolean` | `false` | Abrufen der offentlichen IP aus Datenschutzgrunden deaktivieren |
8387
| `disable_cache` | `boolean` | `false` | Daten-Caching deaktivieren |
8488
| `logo_animation` | `object` oder `null` | `null` | Logo-Animationskonfiguration |
8589
| `info_plugins` | `array` | `[]` | Liste der auszufuhrenden Info-Plugins |
90+
| `config_providers` | `array` | `[]` | Liste der Konfigurations-Provider-Erweiterungen, die nach der Themenzusammenfuhrung ausgefuhrt werden |
8691

8792
### Standardmodule
8893

@@ -268,6 +273,37 @@ Plugin-Daten werden uber Modulschussel mit dem Prefix `plugin:` abgerufen:
268273
}
269274
```
270275

276+
### Konfigurationsanbieter
277+
278+
Das Feld `config_providers` ermoglicht Erweiterungen auf Konfigurationsebene, die Konfiguration vor dem Rendering zu andern. Erweiterungen werden nach der Themenzusammenfuhrung in Deklarationsreihenfolge ausgefuhrt:
279+
280+
```jsonc
281+
{
282+
"config_providers": [
283+
{
284+
"extension": "config-roulette",
285+
"args": {
286+
"routes": "~/.config/xfetch/routes.json",
287+
"strategy": "random"
288+
}
289+
},
290+
{
291+
"extension": "layout-override",
292+
"args": {
293+
"layout": "tree"
294+
}
295+
}
296+
]
297+
}
298+
```
299+
300+
| Feld | Typ | Beschreibung |
301+
|-------|------|-------------|
302+
| `extension` | `string` | Erweiterungsname (Binardatei: `xfetch-extension-<name>`) |
303+
| `args` | `object` oder `null` | Beliebige JSON-Argumente, die an die Erweiterung ubergeben werden |
304+
305+
Erweiterungen kommunizieren uber stdin/stdout JSON, empfangen die vollstandig aufgeloste Konfiguration und geben eine modifizierte Version zuruck. Siehe [Erweiterungen](extensions.md) fur Details.
306+
271307
## Konfigurationsdatei-Speicherorte nach Plattform
272308

273309
| Plattform | Standard-Konfigurationspfad |

docs/de/customization.md

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,48 @@ xfetch kann PNG-, JPG- und SVG-Bilder als Logos mit der Bibliothek `viuer` rende
6868
Das Bild-Rendering verwendet das native Bildprotokoll des Terminals:
6969

7070
- **iTerm2:** Inline-Bildprotokoll
71-
- **Kitty:** Kittys natives Bildprotokoll
71+
- **Kitty:** Kittys natives Bildprotokoll (hohe Auflosung)
7272
- **Sixel:** Sixel-Grafiken (kompatible Terminals wie xterm, mlterm)
7373

74-
Wenn das Terminal keine Bildanzeige unterstützt, fallt xfetch auf ASCII zurück.
74+
Wenn das Terminal keine Bildanzeige unterstützt, fallt xfetch auf ASCII zuruck.
75+
76+
#### Bildgrosse und Positionierung
77+
78+
Steuern Sie Bildabmessungen und Abstande mit diesen Feldern:
79+
80+
```jsonc
81+
{
82+
"logo_path": "~/.config/xfetch/images/mein-bild.png",
83+
"logo_width": 30,
84+
"logo_height": null,
85+
"logo_gap": 5
86+
}
87+
```
88+
89+
| Feld | Standard | Beschreibung |
90+
|-------|---------|-------------|
91+
| `logo_width` | Auto (28% der Terminalbreite, clamp 12–42 Spalten) | Bildbreite in Terminal-Spalten |
92+
| `logo_height` | Auto (Seitenverhaltnis erhalten) | Bildhohe in Terminal-Zeilen |
93+
| `logo_gap` | 12 | Abstand in Spalten zwischen Bild und Infotext |
94+
95+
Die automatische Breitenberechnung skaliert mit Ihrem Terminal: breitere Terminals erhalten proportional grosere Bilder.
96+
97+
#### Kitty Terminal Bild-Rendering
98+
99+
In Kitty-Terminals unterstutzt xfetch zwei Rendering-Modi, gesteuert durch `logo_kitty`:
100+
101+
```jsonc
102+
{
103+
"logo_kitty": true
104+
}
105+
```
106+
107+
| Wert | Modus | Beschreibung |
108+
|-------|------|-------------|
109+
| `true` (Standard) | Natives Protokoll | Vollauflosende Bilder mit Kittys `\x1b_G` Grafikprotokoll. Beste Qualitat. |
110+
| `false` | Half-Block | Bilder gerendert mit Unicode Half-Block-Zeichen (``). Geringere vertikale Auflosung, aber voll kompatibel mit allen Terminalfunktionen. |
111+
112+
Setzen Sie `logo_kitty: false`, wenn Sie Layout-Probleme mit nativem Kitty-Rendering haben (z.B. Textuberlappung oder Fehlausrichtung). Der Half-Block-Fallback garantiert korrektes Side-by-Side-Layout auf Kosten etwas geringerer Bildtreue.
75113

76114
## Logo-Animation
77115

docs/de/extensions.md

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
# Erweiterungen
2+
3+
Erweiterungen sind eigenständige Binardateien, die in den xfetch-Lebenszyklus auf Konfigurationsebene eingreifen. Anders als Plugins (die Infozeilen bereitstellen oder Logos animieren), empfangen Erweiterungen die vollständig aufgelöste Konfiguration uber stdin, modifizieren sie und geben eine modifizierte Version uber stdout zuruck.
4+
5+
## Architektur
6+
7+
```
8+
xfetch core
9+
10+
├─ Ladt config.jsonc
11+
├─ Fugt Thema zusammen (falls gesetzt)
12+
13+
├─ extension-1 (stdin/stdout JSON) ← modifiziert Konfiguration
14+
├─ extension-2 (stdin/stdout JSON) ← modifiziert Konfiguration
15+
├─ ...
16+
17+
└─ Rendert finale Konfiguration
18+
```
19+
20+
Erweiterungen werden **nach der Themenzusammenfuhrung, in Deklarationsreihenfolge** ausgefuhrt. Jede Erweiterung erhalt die vom vorherigen Schritt produzierte Konfiguration, sodass sie verkettet werden konnen.
21+
22+
## Installation
23+
24+
Erweiterungen werden in `~/.config/xfetch/extensions/` installiert:
25+
26+
```bash
27+
cp xfetch-extension-<name> ~/.config/xfetch/extensions/
28+
```
29+
30+
Oder per CLI:
31+
32+
```bash
33+
xfetch extension install ./pfad/zum/binar
34+
xfetch extension list
35+
xfetch extension remove <name>
36+
```
37+
38+
Erweiterungsbinardateien folgen der Namenskonvention `xfetch-extension-<name>` (`.exe` unter Windows).
39+
40+
## Konfiguration
41+
42+
Fugen Sie Erweiterungen uber das Feld `config_providers` zu Ihrer Konfiguration hinzu:
43+
44+
```jsonc
45+
{
46+
"config_providers": [
47+
{
48+
"extension": "layout-override",
49+
"args": {
50+
"layout": "tree"
51+
}
52+
},
53+
{
54+
"extension": "config-roulette",
55+
"args": {
56+
"routes": "~/.config/xfetch/routes.json",
57+
"strategy": "daily"
58+
}
59+
}
60+
]
61+
}
62+
```
63+
64+
| Feld | Typ | Beschreibung |
65+
|-------|------|-------------|
66+
| `extension` | `string` | Erweiterungsname (Binardatei: `xfetch-extension-<name>`) |
67+
| `args` | `object` oder `null` | Beliebige JSON-Argumente, die an die Erweiterung ubergeben werden |
68+
69+
## Protokoll
70+
71+
Erweiterungen kommunizieren uber stdin/stdout mit dem JSON-Protokoll, das in `xfetch-extension-api` definiert ist.
72+
73+
### Anfrage (stdin)
74+
75+
```json
76+
{
77+
"version": 1,
78+
"kind": "config_provider",
79+
"config": {
80+
"layout": "section",
81+
"modules": ["os", "kernel", "uptime"],
82+
"colors": { "os": "Cyan" }
83+
},
84+
"args": {
85+
"layout": "tree"
86+
}
87+
}
88+
```
89+
90+
Das Feld `config` enthalt die vollstandig aufgeloste xfetch-Konfiguration nach Zusammenfuhrung von Standardwerten, Konfigurationsdatei und ggf. Thema.
91+
92+
### Antwort (stdout)
93+
94+
```json
95+
{
96+
"config": {
97+
"layout": "tree",
98+
"modules": ["os", "kernel", "uptime"],
99+
"colors": { "os": "Cyan" }
100+
}
101+
}
102+
```
103+
104+
Die Erweiterung gibt die gesamte modifizierte Konfiguration zuruck. Unveranderte Felder sollten unverandert erhalten bleiben.
105+
106+
### Fehlerbehandlung
107+
108+
Fehler sollten auf stderr ausgegeben werden. Der Prozess sollte mit einem Status ungleich null beendet werden. xfetch uberspringt die Erweiterung und fahrt mit der aktuellen Konfiguration fort, wenn ein Fehler auftritt.
109+
110+
## Verfugbare Erweiterungen
111+
112+
| Erweiterung | Beschreibung |
113+
|-----------|-------------|
114+
| [config-roulette](extensions/config-roulette.md) | Wahlt eine zufallige (oder tagliche) Konfiguration aus einer Liste von Pfaden |
115+
| [layout-override](extensions/layout-override.md) | Uberschreibt das Layout und/oder die Module beim Laden der Konfiguration |
116+
117+
## Verzeichnisse
118+
119+
| Plattform | Erweiterungspfad |
120+
|----------|----------------|
121+
| Linux | `~/.config/xfetch/extensions/` |
122+
| macOS | `~/Library/Application Support/xfetch/extensions/` |
123+
| Windows | `%APPDATA%\xfetch\extensions\` |
124+
125+
## Eigene Erweiterungen schreiben
126+
127+
Erweiterungen mussen:
128+
129+
1. Ein `ConfigProviderRequest` JSON-Objekt von stdin lesen
130+
2. Das `config`-Feld nach Bedarf modifizieren
131+
3. Ein `ConfigProviderResponse` JSON-Objekt auf stdout schreiben
132+
4. Mit Status 0 bei Erfolg, ungleich null bei Fehler beenden
133+
134+
Verwenden Sie das `xfetch-extension-api` Crate von `github.com/xfetch-cli/api` fur typsichere Anfrage-/Antwortbehandlung in Rust.
135+
136+
Das gemeinsame API-Crate ist verfugbar unter: [github.com/xfetch-cli/api](https://github.com/xfetch-cli/api)

0 commit comments

Comments
 (0)