Temi
Seleziona un tema integrato o definisci il tuo.
Con OpenCode puoi selezionare uno dei diversi temi integrati, usare un tema che si adatta al tuo tema del terminale, o definire il tuo tema personalizzato.
Per impostazione predefinita, OpenCode usa il nostro proprio tema opencode.
Requisiti del terminale
Affinche i temi vengano visualizzati correttamente con la loro intera tavolozza di colori, il tuo terminale deve supportare il truecolor (colore a 24 bit). La maggior parte dei terminali moderni lo supporta per impostazione predefinita, ma potresti doverlo attivare:
- Verifica supporto: Esegui
echo $COLORTERM- dovrebbe produrretruecoloro24bit - Attiva truecolor: Imposta la variabile d’ambiente
COLORTERM=truecolornel tuo profilo shell - Compatibilita del terminale: Assicurati che il tuo emulatore di terminale supporti il colore a 24 bit (la maggior parte dei terminali moderni come iTerm2, Alacritty, Kitty, Windows Terminal e le versioni recenti di GNOME Terminal lo fanno)
Senza il supporto truecolor, i temi potrebbero apparire con precisione del colore ridotta o ripiegare sull’approssimazione a 256 colori piu vicina.
Temi integrati
OpenCode viene fornito con diversi temi integrati.
| Nome | Descrizione |
|---|---|
system | Si adatta al colore di sfondo del tuo terminale |
tokyonight | Basato sul tema Tokyonight |
everforest | Basato sul tema Everforest |
ayu | Basato sul tema scuro Ayu |
catppuccin | Basato sul tema Catppuccin |
catppuccin-macchiato | Basato sul tema Catppuccin |
gruvbox | Basato sul tema Gruvbox |
kanagawa | Basato sul tema Kanagawa |
nord | Basato sul tema Nord |
matrix | Tema verde stile hacker su sfondo nero |
one-dark | Basato sul tema scuro Atom One |
E altro, stiamo costantemente aggiungendo nuovi temi.
Tema di sistema
Il tema system e progettato per adattarsi automaticamente allo schema di colori del tuo terminale. A differenza dei temi tradizionali che usano colori fissi, il tema system:
- Genera scala di grigi: Crea una scala di grigi personalizzata basata sul colore di sfondo del tuo terminale, assicurando un contrasto ottimale.
- Usa i colori ANSI: Sfrutta i colori ANSI standard (0-15) per l’evidenziazione della sintassi e gli elementi dell’interfaccia, che rispettano la tavolozza dei colori del tuo terminale.
- Mantiene i valori predefiniti del terminale: Usa
noneper i colori del testo e dello sfondo per mantenere l’aspetto nativo del tuo terminale.
Il tema di sistema e per gli utenti che:
- Vogliono che OpenCode corrisponda all’aspetto del loro terminale
- Usano schemi di colori del terminale personalizzati
- Preferiscono un aspetto coerente in tutte le applicazioni terminal
Uso di un tema
Puoi selezionare un tema richiamando la selezione del tema con il comando /theme. Oppure puoi specificarlo nella tua configurazione.
{ "$schema": "https://opencode.ai/config.json", "theme": "tokyonight"}Temi personalizzati
OpenCode supporta un sistema di temi flessibile basato su JSON che permette agli utenti di creare e personalizzare facilmente i temi.
Gerarchia
I temi vengono caricati da diverse directory nel seguente ordine dove le directory successive sovrascrivono quelle precedenti:
- Temi integrati - Questi sono incorporati nel binario
- Directory di configurazione utente - Definita in
~/.config/opencode/themes/*.jsono$XDG_CONFIG_HOME/opencode/themes/*.json - Directory radice del progetto - Definita in
<radice-progetto>/.opencode/themes/*.json - Directory di lavoro corrente - Definita in
./.opencode/themes/*.json
Se piu directory contengono un tema con lo stesso nome, verra utilizzato il tema della directory con priorita piu alta.
Creazione di un tema
Per creare un tema personalizzato, crea un file JSON in una delle directory dei temi.
Per temi a livello di utente:
mkdir -p ~/.config/opencode/themesvim ~/.config/opencode/themes/my-theme.jsonE per temi specifici del progetto.
mkdir -p .opencode/themesvim .opencode/themes/my-theme.jsonFormato JSON
I temi usano un formato JSON flessibile con supporto per:
- Colori esadecimali:
"#ffffff" - Colori ANSI:
3(0-255) - Riferimenti di colore:
"primary"o definizioni personalizzate - Varianti scure/chiare:
{"dark": "#000", "light": "#fff"} - Nessun colore:
"none"- Usa il colore predefinito del terminale o trasparente
Definizioni dei colori
La sezione defs e opzionale e ti permette di definire colori riutilizzabili che possono essere referenziati nel tema.
Valori predefiniti del terminale
Il valore speciale "none" puo essere usato per qualsiasi colore per ereditare il colore predefinito del terminale. Questo e particolarmente utile per creare temi che si fondono perfettamente con lo schema di colori del tuo terminale:
"text": "none"- Usa il colore di primo piano predefinito del terminale"background": "none"- Usa il colore di sfondo predefinito del terminale
Esempio
Ecco un esempio di tema personalizzato:
{ "$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" } }}