Themen
pi kann Themen erstellen. Bitten Sie es, eines für Ihr Setup zu erstellen.
Themen sind JSON Dateien, die Farben für TUI definieren.
Inhaltsverzeichnis
Standorte
Pi lädt Themen von:
- Eingebaut:
dark,light - Global:
~/.pi/agent/themes/*.json - Projekt:
.pi/themes/*.json(nur nachdem das Projekt vertrauenswürdig ist) - Pakete:
themes/Verzeichnisse oderpi.themesEinträge inpackage.json - Einstellungen:
themesArray mit Dateien oder Verzeichnissen - CLI:
--theme <path>(wiederholbar)
Deaktivieren Sie die Erkennung mit --no-themes.
Auswählen eines Themas
Wählen Sie ein Thema über /settings oder in settings.json:
{
"theme": "my-theme"
}Beim ersten Start erkennt pi den Hintergrund Ihres Terminals und stellt standardmäßig dark oder light ein.
Erstellen eines benutzerdefinierten Themes
- Erstellen Sie eine Theme-Datei:
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json- Definieren Sie das Theme mit allen benötigten Farben (siehe Color Tokens):
{
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
"name": "my-theme",
"vars": {
"primary": "#00aaff",
"secondary": 242
},
"colors": {
"accent": "primary",
"border": "primary",
"borderAccent": "#00ffff",
"borderMuted": "secondary",
"success": "#00ff00",
"error": "#ff0000",
"warning": "#ffff00",
"muted": "secondary",
"dim": 240,
"text": "",
"thinkingText": "secondary",
"selectedBg": "#2d2d30",
"scrollbarThumb": "#555566",
"userMessageBg": "#2d2d30",
"userMessageText": "",
"customMessageBg": "#2d2d30",
"customMessageText": "",
"customMessageLabel": "primary",
"toolPendingBg": "#1e1e2e",
"toolSuccessBg": "#1e2e1e",
"toolErrorBg": "#2e1e1e",
"toolTitle": "primary",
"toolOutput": "",
"mdHeading": "#ffaa00",
"mdLink": "primary",
"mdLinkUrl": "secondary",
"mdCode": "#00ffff",
"mdCodeBlock": "",
"mdCodeBlockBorder": "secondary",
"mdQuote": "secondary",
"mdQuoteBorder": "secondary",
"mdHr": "secondary",
"mdListBullet": "#00ffff",
"toolDiffAdded": "#00ff00",
"toolDiffRemoved": "#ff0000",
"toolDiffContext": "secondary",
"syntaxComment": "secondary",
"syntaxKeyword": "primary",
"syntaxFunction": "#00aaff",
"syntaxVariable": "#ffaa00",
"syntaxString": "#00ff00",
"syntaxNumber": "#ff00ff",
"syntaxType": "#00aaff",
"syntaxOperator": "primary",
"syntaxPunctuation": "secondary",
"thinkingOff": "secondary",
"thinkingMinimal": "primary",
"thinkingLow": "#00aaff",
"thinkingMedium": "#00ffff",
"thinkingHigh": "#ff00ff",
"thinkingXhigh": "#ff0000",
"thinkingMax": "#ff0088",
"bashMode": "#ffaa00"
}
}- Wählen Sie das Thema über
/settingsaus.
Hot Reload: Wenn Sie die aktuell aktive benutzerdefinierte Designdatei bearbeiten, lädt Pi sie automatisch neu, um sofortiges visuelles Feedback zu erhalten.
Themenformat
{
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
"name": "my-theme",
"vars": {
"blue": "#0066cc",
"gray": 242
},
"colors": {
"accent": "blue",
"muted": "gray",
"text": "",
...
}
}nameist erforderlich, muss eindeutig sein und darf/nicht enthalten.varsist optional. Definieren Sie hier wiederverwendbare Farben und referenzieren Sie sie dann incolors.colorsmuss alle 51 erforderlichen Token definieren.thinkingMaxist optional und greift aufthinkingXhighzurück;scrollbarThumbist optional und greift aufselectedBgzurück.
Das Feld $schema ermöglicht die automatische Vervollständigung und Validierung des Editors.
Farbtoken
Jedes Thema muss alle 51 erforderlichen Farbtoken definieren. thinkingMax und scrollbarThumb sind aus Kompatibilitätsgründen mit vorhandenen Themes optional; Wenn es weggelassen wird, verwenden sie thinkingXhigh bzw. selectedBg.
Kern-Benutzeroberfläche (11 Farben)
| Token | Zweck |
|---|---|
accent |
Hauptakzent (Logo, ausgewählte Elemente, Cursor) |
border |
Normale Grenzen |
borderAccent |
Hervorgehobene Grenzen |
borderMuted |
Subtile Grenzen (Herausgeber) |
success |
Erfolgszustände |
error |
Fehlerzustände |
warning |
Warnzustände |
muted |
Sekundärtext |
dim |
Tertiärer Text |
text |
Standardtext (normalerweise "") |
thinkingText |
Denkblocktext |
Hintergründe und Inhalte (11 erforderlich, 1 optional)
| Token | Zweck |
|---|---|
selectedBg |
Ausgewählter Zeilenhintergrund |
scrollbarThumb |
Vollbild-Bildlaufleisten-Daumenhintergrund; optional, fällt auf selectedBg zurück |
userMessageBg |
Hintergrund der Benutzernachricht |
userMessageText |
Text der Benutzernachricht |
customMessageBg |
Hintergrund der Erweiterungsnachricht |
customMessageText |
Text der Erweiterungsnachricht |
customMessageLabel |
Beschriftung der Erweiterungsnachricht |
toolPendingBg |
Werkzeugkasten (ausstehend) |
toolSuccessBg |
Werkzeugkasten (Erfolg) |
toolErrorBg |
Werkzeugkasten (Fehler) |
toolTitle |
Werkzeugtitel |
toolOutput |
Werkzeugausgabetext |
Markdown (10 Farben)
| Token | Zweck |
|---|---|
mdHeading |
Überschriften |
mdLink |
Linktext |
mdLinkUrl |
Link-URL |
mdCode |
Inline-Code |
mdCodeBlock |
Inhalt des Codeblocks |
mdCodeBlockBorder |
Codeblockzäune |
mdQuote |
Blockquote-Text |
mdQuoteBorder |
Blockquote-Grenze |
mdHr |
Horizontale Regel |
mdListBullet |
Listen Sie Aufzählungszeichen auf |
Werkzeugunterschiede (3 Farben)
| Token | Zweck |
|---|---|
toolDiffAdded |
Zeilen hinzugefügt |
toolDiffRemoved |
Zeilen entfernt |
toolDiffContext |
Kontextzeilen |
Syntaxhervorhebung (9 Farben)
| Token | Zweck |
|---|---|
syntaxComment |
Kommentare |
syntaxKeyword |
Schlüsselwörter |
syntaxFunction |
Funktionsnamen |
syntaxVariable |
Variablen |
syntaxString |
Saiten |
syntaxNumber |
Zahlen |
syntaxType |
Typen |
syntaxOperator |
Betreiber |
syntaxPunctuation |
Interpunktion |
Grenzen der Denkebene (6 erforderlich, 1 optional)
Die Rahmenfarben des Editors geben die Denkebene an (visuelle Hierarchie von subtil bis prominent):
| Token | Zweck |
|---|---|
thinkingOff |
Nachdenken |
thinkingMinimal |
Minimales Denken |
thinkingLow |
Niedriges Denken |
thinkingMedium |
Mittleres Denken |
thinkingHigh |
Hohes Denken |
thinkingXhigh |
Extra hohes Denken |
thinkingMax |
Maximales Denken; optional, fällt auf thinkingXhigh zurück |
Bash-Modus (1 Farbe)
| Token | Zweck |
|---|---|
bashMode |
Editorrahmen im bash-Modus (!-Präfix) |
HTML-Export (optional)
Der Abschnitt export steuert die Farben für die /export HTML-Ausgabe. Wenn es weggelassen wird, werden die Farben von userMessageBg abgeleitet.
{
"export": {
"pageBg": "#18181e",
"cardBg": "#1e1e24",
"infoBg": "#3c3728"
}
}Farbwerte
Vier Formate werden unterstützt:
| Format | Beispiel | Beschreibung |
|---|---|---|
| Verhexen | "#ff0000" |
6-stelliges Hex-RGB |
| 256 Farben | 39 |
xterm 256-Farbpalettenindex (0-255) |
| Variable | "primary" |
Verweis auf einen vars-Eintrag |
| Standard | "" |
Die Standardfarbe des Terminals |
256-Farben-Palette
0-15: Grundlegende ANSI-Farben (terminalabhängig)16-231: 6×6×6 RGB-Würfel (16 + 36×R + 6×G + Bwobei R,G,B 0-5 sind)232-255: Graustufenrampe
Terminalkompatibilität
Pi verwendet 24-Bit-RGB-Farben. Die meisten modernen Terminals unterstützen dies (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). Bei älteren Terminals mit nur 256-Farben-Unterstützung fällt pi auf die nächste Näherung zurück.
Überprüfen Sie die Truecolor-Unterstützung:
echo $COLORTERM # Should output "truecolor" or "24bit"Tipps
Dunkle Terminals: Verwenden Sie helle, gesättigte Farben mit höherem Kontrast.
Helle Terminals: Verwenden Sie dunklere, gedämpfte Farben mit geringerem Kontrast.
Farbharmonie: Beginnen Sie mit einer Basispalette (Nord, Gruvbox, Tokyo Night), definieren Sie sie in vars und referenzieren Sie sie konsistent.
Testen: Überprüfen Sie Ihr Theme mit verschiedenen Nachrichtentypen, Tool-Status, Markdown-Inhalten und langem umbrochenem Text.
VS-Code: Setzen Sie terminal.integrated.minimumContrastRatio auf 1 für genaue Farben.
Beispiele
Sehen Sie sich die integrierten Themen an: