Themes
Wahlen Sie ein integriertes Theme oder definieren Sie Ihr eigenes.
Mit OpenCode konnen Sie aus mehreren integrierten Themen wahlen, ein Theme verwenden, das sich an Ihr Terminal-Theme anpasst, oder Ihr eigenes benutzerdefiniertes Theme definieren.
Standardmafig verwendet OpenCode unser eigenes opencode-Theme.
Terminal-Anforderungen
Damit Themes mit ihrer gesamten Farbpalette korrekt angezeigt werden, muss Ihr Terminal Truecolor (24-Bit-Farbe) unterstutzen. Die meisten modernen Terminals unterstutzen dies standardmafig, aber Sie mussen es moglicherweise aktivieren:
- Unterstutzung prufen: Fuhren Sie
echo $COLORTERMaus - es solltetruecoloroder24bitausgeben - Truecolor aktivieren: Setzen Sie die Umgebungsvariable
COLORTERM=truecolorin Ihrem Shell-Profil - Terminal-Kompatibilitat: Stellen Sie sicher, dass Ihr Terminal-Emulator 24-Bit-Farbe unterstutzt (die meisten modernen Terminals wie iTerm2, Alacritty, Kitty, Windows Terminal und neuere Versionen von GNOME Terminal tun dies)
Ohne Truecolor-Unterstutzung konnen Themes mit reduzierter Farbgenauigkeit angezeigt werden oder auf den nachsten 256-Farben-Wert zuruckfallen.
Integrierte Themes
OpenCode wird mit mehreren integrierten Themes geliefert.
| Name | Beschreibung |
|---|---|
system | Passt sich an die Hintergrundfarbe Ihres Terminals an |
tokyonight | Basierend auf dem Tokyonight-Theme |
everforest | Basierend auf dem Everforest-Theme |
ayu | Basierend auf dem Ayu Dark-Theme |
catppuccin | Basierend auf dem Catppuccin-Theme |
catppuccin-macchiato | Basierend auf dem Catppuccin-Theme |
gruvbox | Basierend auf dem Gruvbox-Theme |
kanagawa | Basierend auf dem Kanagawa-Theme |
nord | Basierend auf dem Nord-Theme |
matrix | Hacker-stiliges Grun auf Schwarz Theme |
one-dark | Basierend auf dem Atom One Dark-Theme |
Und mehr, wir fuhren standig neue Themes hinzu.
System-Theme
Das system-Theme ist darauf ausgelegt, sich automatisch an das Farbschema Ihres Terminals anzupassen. Im Gegensatz zu traditionellen Themes, die feste Farben verwenden, passt das system-Theme an:
- Erstellt Graustufen: Erstellt eine benutzerdefinierte Graustufe basierend auf der Hintergrundfarbe Ihres Terminals und sorgt so fur optimalen Kontrast.
- Verwendet ANSI-Farben: Nutzt Standard-ANSI-Farben (0-15) fur Syntaxhervorhebung und UI-Elemente, die Ihr Terminal-Farbschema respektieren.
- Behaltt Terminal-Standards bei: Verwendet
nonefur Text- und Hintergrundfarben, um das native Aussehen Ihres Terminals zu erhalten.
Das System-Theme ist fur Benutzer, die:
- Möchten, dass OpenCode dem Aussehen ihres Terminals entspricht
- Benutzerdefinierte Terminal-Farbschemata verwenden
- Ein konsistentes Look uber alle Terminal-Anwendungen bevorzugen
Verwendung eines Themes
Sie konnen ein Theme auswahlen, indem Sie die Theme-Auswahl mit dem Befehl /theme aufzurufen. Oder Sie konnen es in Ihrer Konfiguration angeben.
{ "$schema": "https://opencode.ai/config.json", "theme": "tokyonight"}Benutzerdefinierte Themes
OpenCode unterstutzt ein flexibles JSON-basiertes Theme-System, das es Benutzern erleichtert, Themes zu erstellen und anzupassen.
Hierarchie
Themes werden aus mehreren Verzeichnissen in der folgenden Reihenfolge geladen, wobei spater Verzeichnisse fruhere uberschreiben:
- Integrierte Themes - Diese sind in der Binardatei eingebettet
- Benutzerkonfigurationsverzeichnis - Definiert in
~/.config/opencode/themes/*.jsonoder$XDG_CONFIG_HOME/opencode/themes/*.json - Projektstammverzeichnis - Definiert in
<projektstamm>/.opencode/themes/*.json - Aktuelles Arbeitsverzeichnis - Definiert in
./.opencode/themes/*.json
Wenn mehrere Verzeichnisse ein Theme mit demselben Namen enthalten, wird das Theme aus dem Verzeichnis mit hoherer Prioritat verwendet.
Theme erstellen
Um ein benutzerdefiniertes Theme zu erstellen, erstellen Sie eine JSON-Datei in einem der Theme-Verzeichnisse.
Fur benutzerweite Themes:
mkdir -p ~/.config/opencode/themesvim ~/.config/opencode/themes/my-theme.jsonUnd fur projektspezifische Themes.
mkdir -p .opencode/themesvim .opencode/themes/my-theme.jsonJSON-Format
Themes verwenden ein flexibles JSON-Format mit Unterstutzung fur:
- Hex-Farben:
"#ffffff" - ANSI-Farben:
3(0-255) - Farbreferenzen:
"primary"oder benutzerdefinierte Definitionen - Dunkel/Hell-Varianten:
{"dark": "#000", "light": "#fff"} - Keine Farbe:
"none"- Verwendet die Standardfarbe des Terminals oder transparent
Farbfinitionen
Der Abschnitt defs ist optional und er erlaubt es Ihnen, wiederverwendbare Farben zu definieren, die im Theme referenziert werden konnen.
Terminal-Standards
Der spezielle Wert "none" kann fur jede Farbe verwendet werden, um die Standardfarbe des Terminals zu erben. Dies ist besonders nutzlich fur die Erstellung von Themes, die nahtlos mit dem Farbschema Ihres Terminals verschmelzen:
"text": "none"- Verwendet die Standard-Vordergrundfarbe des Terminals"background": "none"- Verwendet die Standard-Hintergrundfarbe des Terminals
Beispiel
Hier ist ein Beispiel fur ein benutzerdefiniertes Theme:
{ "$schema": "https://opencode.ai/theme.json", "defs": { "nord0": "#2E3440", "nord1": "#3B4252", "nord2": "#434C5E", "nord3": "#4C566A", "nord4": "#D8DEE9", "nord5": "#E5E9F0", "nord6": "#ECEFF4", "nord7": "#8FBCBB", "nord8": "#88C0D0", "nord9": "#81A1C1", "nord10": "#5E81AC", "nord11": "#BF616A", "nord12": "#D08770", "nord13": "#EBCB8B", "nord14": "#A3BE8C", "nord15": "#B48EAD" }, "theme": { "primary": { "dark": "nord8", "light": "nord10" }, "secondary": { "dark": "nord9", "light": "nord9" }, "accent": { "dark": "nord7", "light": "nord7" }, "error": { "dark": "nord11", "light": "nord11" }, "warning": { "dark": "nord12", "light": "nord12" }, "success": { "dark": "nord14", "light": "nord14" }, "info": { "dark": "nord8", "light": "nord10" }, "text": { "dark": "nord4", "light": "nord0" }, "textMuted": { "dark": "nord3", "light": "nord1" }, "background": { "dark": "nord0", "light": "nord6" }, "backgroundPanel": { "dark": "nord1", "light": "nord5" }, "backgroundElement": { "dark": "nord1", "light": "nord4" }, "border": { "dark": "nord2", "light": "nord3" }, "borderActive": { "dark": "nord3", "light": "nord2" }, "borderSubtle": { "dark": "nord2", "light": "nord3" }, "diffAdded": { "dark": "nord14", "light": "nord14" }, "diffRemoved": { "dark": "nord11", "light": "nord11" }, "diffContext": { "dark": "nord3", "light": "nord3" }, "diffHunkHeader": { "dark": "nord3", "light": "nord3" }, "diffHighlightAdded": { "dark": "nord14", "light": "nord14" }, "diffHighlightRemoved": { "dark": "nord11", "light": "nord11" }, "diffAddedBg": { "dark": "#3B4252", "light": "#E5E9F0" }, "diffRemovedBg": { "dark": "#3B4252", "light": "#E5E9F0" }, "diffContextBg": { "dark": "nord1", "light": "nord5" }, "diffLineNumber": { "dark": "nord2", "light": "nord4" }, "diffAddedLineNumberBg": { "dark": "#3B4252", "light": "#E5E9F0" }, "diffRemovedLineNumberBg": { "dark": "#3B4252", "light": "#E5E9F0" }, "markdownText": { "dark": "nord4", "light": "nord0" }, "markdownHeading": { "dark": "nord8", "light": "nord10" }, "markdownLink": { "dark": "nord9", "light": "nord9" }, "markdownLinkText": { "dark": "nord7", "light": "nord7" }, "markdownCode": { "dark": "nord14", "light": "nord14" }, "markdownBlockQuote": { "dark": "nord3", "light": "nord3" }, "markdownEmph": { "dark": "nord12", "light": "nord12" }, "markdownStrong": { "dark": "nord13", "light": "nord13" }, "markdownHorizontalRule": { "dark": "nord3", "light": "nord3" }, "markdownListItem": { "dark": "nord8", "light": "nord10" }, "markdownListEnumeration": { "dark": "nord7", "light": "nord7" }, "markdownImage": { "dark": "nord9", "light": "nord9" }, "markdownImageText": { "dark": "nord7", "light": "nord7" }, "markdownCodeBlock": { "dark": "nord4", "light": "nord0" }, "syntaxComment": { "dark": "nord3", "light": "nord3" }, "syntaxKeyword": { "dark": "nord9", "light": "nord9" }, "syntaxFunction": { "dark": "nord8", "light": "nord8" }, "syntaxVariable": { "dark": "nord7", "light": "nord7" }, "syntaxString": { "dark": "nord14", "light": "nord14" }, "syntaxNumber": { "dark": "nord15", "light": "nord15" }, "syntaxType": { "dark": "nord7", "light": "nord7" }, "syntaxOperator": { "dark": "nord9", "light": "nord9" }, "syntaxPunctuation": { "dark": "nord4", "light": "nord0" } }}