Temalar
pi temalar oluşturabilir. Kurulumunuz için bir tane oluşturmasını isteyin.
Temalar, TUI için renkleri tanımlayan JSON dosyalardır.
İçindekiler
Konumlar
Pi temaları şuradan yükler:
- Dahili:
dark,light - Küresel:
~/.pi/agent/themes/*.json - Proje:
.pi/themes/*.json(yalnızca projeye güvenildikten sonra) - Paketler:
themes/dizinler veyapackage.jsoniçindekipi.themesgirişler - Ayarlar:
themesdosya veya dizin içeren dizi - CLI:
--theme <path>(tekrarlanabilir)
--no-themes ile keşfi devre dışı bırakın.
Tema Seçme
/settings veya settings.json aracılığıyla bir tema seçin:
{
"theme": "my-theme"
}İlk çalıştırmada pi, terminal arka planınızı algılar ve varsayılan olarak dark veya light olur.
Özel Tema Oluşturma
- Bir tema dosyası oluşturun:
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json- Temayı gerekli tüm renklerle tanımlayın (bkz. 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"
}
}/settingsile temayı seçin.
Çalışırken yeniden yükleme: Şu anda etkin olan özel tema dosyasını düzenlediğinizde, pi anında görsel geri bildirim için dosyayı otomatik olarak yeniden yükler.
Tema Formatı
{
"$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": "",
...
}
}namegereklidir, benzersiz olmalı ve/içermemelidir.varsisteğe bağlıdır. Yeniden kullanılabilir renkleri burada tanımlayın ve ardındancolors'de bunlara referans verin.colorsgerekli 51 jetonun tamamını tanımlamalıdır.thinkingMaxisteğe bağlıdır vethinkingXhigh'ye geri döner;scrollbarThumbisteğe bağlıdır veselectedBg'ye geri döner.
$schema alanı, düzenleyicinin otomatik tamamlamasını ve doğrulamasını sağlar.
Renk Jetonları
Her tema gerekli 51 renk jetonunun tümünü tanımlamalıdır. thinkingMax ve scrollbarThumb mevcut temalarla uyumluluk açısından isteğe bağlıdır; atlandığında sırasıyla thinkingXhigh ve selectedBg'yi kullanırlar.
Çekirdek kullanıcı arayüzü (11 renk)
| Jeton | Amaç |
|---|---|
accent |
Birincil vurgu (logo, seçilen öğeler, imleç) |
border |
Normal sınırlar |
borderAccent |
Vurgulanan kenarlıklar |
borderMuted |
İnce kenarlıklar (editör) |
success |
Başarı durumları |
error |
Hata durumları |
warning |
Uyarı durumları |
muted |
İkincil metin |
dim |
Üçüncül metin |
text |
Varsayılan metin (genellikle "") |
thinkingText |
Düşünme bloğu metni |
Arka Planlar ve İçerik (11 gerekli, 1 isteğe bağlı)
| Jeton | Amaç |
|---|---|
selectedBg |
Seçilen satır arka planı |
scrollbarThumb |
Tam ekran kaydırma çubuğu başparmak arka planı; isteğe bağlı, selectedBg'ye geri döner |
userMessageBg |
Kullanıcı mesajı arka planı |
userMessageText |
Kullanıcı mesaj metni |
customMessageBg |
Uzantı mesajı arka planı |
customMessageText |
Uzantı mesaj metni |
customMessageLabel |
Uzantı mesaj etiketi |
toolPendingBg |
Araç kutusu (beklemede) |
toolSuccessBg |
Alet kutusu (başarı) |
toolErrorBg |
Alet kutusu (hata) |
toolTitle |
Araç başlığı |
toolOutput |
Araç çıktı metni |
Markdown (10 renk)
| Jeton | Amaç |
|---|---|
mdHeading |
Başlıklar |
mdLink |
Bağlantı metni |
mdLinkUrl |
Bağlantı URL'si |
mdCode |
Satır içi kod |
mdCodeBlock |
Kod bloğu içeriği |
mdCodeBlockBorder |
Kod bloğu çitleri |
mdQuote |
Blok alıntı metni |
mdQuoteBorder |
Blok alıntı sınırı |
mdHr |
Yatay kural |
mdListBullet |
Madde işaretlerini listele |
Araç Farkları (3 renk)
| Jeton | Amaç |
|---|---|
toolDiffAdded |
Eklenen satırlar |
toolDiffRemoved |
Kaldırılan satırlar |
toolDiffContext |
Bağlam satırları |
Sözdizimi Vurgulama (9 renk)
| Jeton | Amaç |
|---|---|
syntaxComment |
Yorumlar |
syntaxKeyword |
Anahtar Kelimeler |
syntaxFunction |
İşlev adları |
syntaxVariable |
Değişkenler |
syntaxString |
Dizeler |
syntaxNumber |
Sayılar |
syntaxType |
Türler |
syntaxOperator |
Operatörler |
syntaxPunctuation |
Noktalama |
Düşünme Düzeyi Sınırları (6 gerekli, 1 isteğe bağlı)
Düşünme düzeyini gösteren düzenleyici kenarlık renkleri (inceden göze çarpana doğru görsel hiyerarşi):
| Jeton | Amaç |
|---|---|
thinkingOff |
Düşünmek |
thinkingMinimal |
Minimal düşünme |
thinkingLow |
Düşük düşünme |
thinkingMedium |
Orta düşünme |
thinkingHigh |
Yüksek düşünme |
thinkingXhigh |
Ekstra yüksek düşünme |
thinkingMax |
Maksimum düşünme; isteğe bağlı, thinkingXhigh'ye geri döner |
Bash Modu (1 renk)
| Jeton | Amaç |
|---|---|
bashMode |
bash modunda düzenleyici kenarlığı (! öneki) |
HTML Dışa Aktarma (isteğe bağlı)
export bölümü, /export HTML çıktısının renklerini kontrol eder. Atlanırsa renkler userMessageBg'den türetilir.
{
"export": {
"pageBg": "#18181e",
"cardBg": "#1e1e24",
"infoBg": "#3c3728"
}
}Renk Değerleri
Dört format desteklenir:
| Biçim | Örnek | Tanım |
|---|---|---|
| Altıgen | "#ff0000" |
6 haneli altıgen RGB |
| 256 renkli | 39 |
xterm 256 renk paleti dizini (0-255) |
| Değişken | "primary" |
vars girişine referans |
| Varsayılan | "" |
Terminalin varsayılan rengi |
256 Renk Paleti
0-15: Temel ANSI renkleri (terminale bağlı)16-231: 6×6×6 RGB küp (16 + 36×R + 6×G + Bburada R,G,B 0-5'tir)232-255: Gri tonlamalı rampa
Terminal Uyumluluğu
Pi 24 bit RGB renkleri kullanır. Çoğu modern terminal bunu destekler (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). Yalnızca 256 renk desteğine sahip eski terminaller için pi, en yakın yaklaşıma geri döner.
Truecolor desteğini kontrol edin:
echo $COLORTERM # Should output "truecolor" or "24bit"İpuçları
Koyu terminaller: Daha yüksek kontrastlı, parlak, doygun renkler kullanın.
Açık terminaller: Daha düşük kontrastlı, daha koyu, yumuşak renkler kullanın.
Renk uyumu: Temel bir paletle başlayın (Nord, Gruvbox, Tokyo Night), onu vars ile tanımlayın ve tutarlı bir şekilde referans verin.
Test: Farklı mesaj türleri, araç durumları, işaretleme içeriği ve uzun sarılmış metinlerle temanızı kontrol edin.
VS Kodu: Doğru renkler için terminal.integrated.minimumContrastRatio'ı 1 olarak ayarlayın.
Örnekler
Yerleşik temalara bakın: