Tema
pi dapat membuat tema. Mintalah untuk membuatkannya untuk pengaturan Anda.
Tema adalah file JSON yang menentukan warna untuk TUI.
Daftar isi
Lokasi
Pi memuat tema dari:
- Bawaan:
dark,light - Global:
~/.pi/agent/themes/*.json - Proyek:
.pi/themes/*.json(hanya setelah proyek dipercaya) - Paket:
themes/direktori ataupi.themesentri dipackage.json - Pengaturan:
themesarray dengan file atau direktori - CLI:
--theme <path>(dapat diulang)
Nonaktifkan penemuan dengan --no-themes.
Memilih Tema
Pilih tema melalui /settings atau di settings.json:
{
"theme": "my-theme"
}Saat pertama kali dijalankan, pi mendeteksi latar belakang terminal Anda dan defaultnya adalah dark atau light.
Membuat Tema Kustom
- Buat file tema:
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json- Tentukan tema dengan semua warna yang diperlukan (lihat 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"
}
}- Pilih tema melalui
/settings.
Hot reload: Saat Anda mengedit file tema khusus yang sedang aktif, pi memuat ulang secara otomatis untuk mendapatkan masukan visual langsung.
Format Tema
{
"$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": "",
...
}
}namewajib diisi, harus unik, dan tidak boleh mengandung/.varsadalah opsional. Tentukan warna yang dapat digunakan kembali di sini, lalu referensikan dicolors.colorsharus mendefinisikan seluruh 51 token yang diperlukan.thinkingMaxbersifat opsional dan kembali kethinkingXhigh;scrollbarThumbbersifat opsional dan kembali keselectedBg.
Bidang $schema mengaktifkan pelengkapan dan validasi otomatis editor.
Token Warna
Setiap tema harus menentukan 51 token warna yang diperlukan. thinkingMax dan scrollbarThumb bersifat opsional untuk kompatibilitas dengan tema yang ada; jika dihilangkan, masing-masing menggunakan thinkingXhigh dan selectedBg.
UI Inti (11 warna)
| Token | Tujuan |
|---|---|
accent |
Aksen utama (logo, item yang dipilih, kursor) |
border |
Perbatasan biasa |
borderAccent |
Perbatasan yang disorot |
borderMuted |
Batas halus (editor) |
success |
Status sukses |
error |
Status kesalahan |
warning |
Status peringatan |
muted |
Teks sekunder |
dim |
Teks tersier |
text |
Teks default (biasanya "") |
thinkingText |
Teks blok berpikir |
Latar Belakang & Konten (11 wajib, 1 opsional)
| Token | Tujuan |
|---|---|
selectedBg |
Latar belakang garis yang dipilih |
scrollbarThumb |
Latar belakang jempol scrollbar layar penuh; opsional, kembali ke selectedBg |
userMessageBg |
Latar belakang pesan pengguna |
userMessageText |
Teks pesan pengguna |
customMessageBg |
Latar belakang pesan ekstensi |
customMessageText |
Teks pesan ekstensi |
customMessageLabel |
Label pesan ekstensi |
toolPendingBg |
Kotak alat (menunggu keputusan) |
toolSuccessBg |
Kotak alat (sukses) |
toolErrorBg |
Kotak alat (kesalahan) |
toolTitle |
Judul alat |
toolOutput |
Teks keluaran alat |
Markdown (10 warna)
| Token | Tujuan |
|---|---|
mdHeading |
Judul |
mdLink |
Teks tautan |
mdLinkUrl |
URL tautan |
mdCode |
Kode sebaris |
mdCodeBlock |
Konten blok kode |
mdCodeBlockBorder |
Pagar blok kode |
mdQuote |
Teks kutipan blok |
mdQuoteBorder |
Batas blokquote |
mdHr |
Aturan horisontal |
mdListBullet |
Daftar poin-poin |
Perbedaan Alat (3 warna)
| Token | Tujuan |
|---|---|
toolDiffAdded |
Menambahkan baris |
toolDiffRemoved |
Garis yang dihapus |
toolDiffContext |
Garis konteks |
Penyorotan Sintaks (9 warna)
| Token | Tujuan |
|---|---|
syntaxComment |
Komentar |
syntaxKeyword |
Kata kunci |
syntaxFunction |
Nama fungsi |
syntaxVariable |
Variabel |
syntaxString |
string |
syntaxNumber |
Angka |
syntaxType |
Jenis |
syntaxOperator |
Operator |
syntaxPunctuation |
tanda baca |
Batas Tingkat Berpikir (6 wajib, 1 opsional)
Warna batas editor menunjukkan tingkat berpikir (hierarki visual dari halus hingga menonjol):
| Token | Tujuan |
|---|---|
thinkingOff |
Berpikir |
thinkingMinimal |
Minimal berpikir |
thinkingLow |
Berpikir rendah |
thinkingMedium |
Pemikiran sedang |
thinkingHigh |
Berpikir tinggi |
thinkingXhigh |
Pemikiran ekstra tinggi |
thinkingMax |
Pemikiran maksimal; opsional, kembali ke thinkingXhigh |
Mode Pesta (1 warna)
| Token | Tujuan |
|---|---|
bashMode |
Batas editor dalam mode bash (awalan !) |
Ekspor HTML (opsional)
Bagian export mengontrol warna untuk /export keluaran HTML. Jika dihilangkan, warna berasal dari userMessageBg.
{
"export": {
"pageBg": "#18181e",
"cardBg": "#1e1e24",
"infoBg": "#3c3728"
}
}Nilai Warna
Empat format yang didukung:
| Format | Contoh | Keterangan |
|---|---|---|
| kutukan | "#ff0000" |
RGB heksa 6 digit |
| 256 warna | 39 |
xterm indeks palet 256 warna (0-255) |
| Variabel | "primary" |
Referensi ke entri vars |
| Bawaan | "" |
Warna default terminal |
Palet 256 Warna
0-15: Warna dasar ANSI (tergantung terminal)16-231: 6×6×6 kubus RGB (16 + 36×R + 6×G + Bdengan R,G,B adalah 0-5)232-255: Jalan skala abu-abu
Kompatibilitas Terminal
Pi menggunakan warna RGB 24-bit. Kebanyakan terminal modern mendukung ini (iTerm2, Kitty, WezTerm, Terminal Windows, VS Code). Untuk terminal lama yang hanya mendukung 256 warna, pi kembali ke perkiraan terdekat.
Periksa dukungan warna asli:
echo $COLORTERM # Should output "truecolor" or "24bit"Kiat
Terminal gelap: Gunakan warna cerah dan jenuh dengan kontras lebih tinggi.
Terminal terang: Gunakan warna yang lebih gelap dan kalem dengan kontras lebih rendah.
Harmoni warna: Mulailah dengan palet dasar (Nord, Gruvbox, Tokyo Night), tentukan di vars, dan rujuk secara konsisten.
Pengujian: Periksa tema Anda dengan berbagai jenis pesan, status alat, konten penurunan harga, dan teks panjang.
Kode VS: Setel terminal.integrated.minimumContrastRatio ke 1 untuk warna yang akurat.
Contoh
Lihat tema bawaan: