テーマ
pi はテーマを作成できます。セットアップ用にビルドするように依頼してください。
テーマは、TUI の色を定義する JSON ファイルです。
目次
所在地
Pi は次からテーマを読み込みます:
- 内蔵:
dark、light - グローバル:
~/.pi/agent/themes/*.json - プロジェクト:
.pi/themes/*.json(プロジェクトが信頼された後のみ) - パッケージ:
themes/ディレクトリまたはpackage.jsonのpi.themesエントリ - 設定:
themesファイルまたはディレクトリを含む配列 - CLI:
--theme <path>(繰り返し可能)
--no-themes で検出を無効にします。
テーマの選択
/settings または settings.json でテーマを選択します。
{
"theme": "my-theme"
}最初の実行時に、pi は端末の背景を検出し、デフォルトで dark または light に設定されます。
カスタムテーマの作成
- テーマファイルを作成します。
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json- 必要なすべての色を使用してテーマを定義します (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"
}
}/settingsからテーマを選択します。
ホット リロード: 現在アクティブなカスタム テーマ ファイルを編集すると、pi はそれを自動的にリロードし、即座に視覚的なフィードバックを提供します。
テーマ形式
{
"$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": "",
...
}
}nameは必須であり、一意である必要があり、/を含めることはできません。varsはオプションです。再利用可能な色をここで定義し、colorsで参照します。colorsは、51 個の必須トークンをすべて定義する必要があります。thinkingMaxはオプションであり、thinkingXhighに戻ります。scrollbarThumbはオプションであり、selectedBgに戻ります。
$schema フィールドは、エディターの自動補完と検証を有効にします。
カラートークン
すべてのテーマでは、必要な 51 個のカラー トークンをすべて定義する必要があります。 thinkingMax と scrollbarThumb は、既存のテーマとの互換性を保つためのオプションです。省略した場合は、それぞれ thinkingXhigh と selectedBg が使用されます。
コアUI(11色)
| トークン | 目的 |
|---|---|
accent |
プライマリアクセント (ロゴ、選択されたアイテム、カーソル) |
border |
通常の境界線 |
borderAccent |
ハイライトされた境界線 |
borderMuted |
微妙な境界線(編集者) |
success |
成功状態 |
error |
エラー状態 |
warning |
警告状態 |
muted |
二次テキスト |
dim |
三次テキスト |
text |
デフォルトのテキスト (通常は "") |
thinkingText |
思考ブロックのテキスト |
背景とコンテンツ (11 個は必須、1 個はオプション)
| トークン | 目的 |
|---|---|
selectedBg |
選択した線の背景 |
scrollbarThumb |
全画面スクロールバーのサムの背景。オプション、selectedBg に戻ります |
userMessageBg |
ユーザーメッセージの背景 |
userMessageText |
ユーザーメッセージテキスト |
customMessageBg |
拡張メッセージの背景 |
customMessageText |
拡張メッセージのテキスト |
customMessageLabel |
拡張メッセージラベル |
toolPendingBg |
ツールボックス (保留中) |
toolSuccessBg |
工具箱(成功) |
toolErrorBg |
ツールボックス(エラー) |
toolTitle |
ツールのタイトル |
toolOutput |
ツール出力テキスト |
Markdown (10色)
| トークン | 目的 |
|---|---|
mdHeading |
見出し |
mdLink |
リンクテキスト |
mdLinkUrl |
リンクURL |
mdCode |
インラインコード |
mdCodeBlock |
コードブロックの内容 |
mdCodeBlockBorder |
コードブロックフェンス |
mdQuote |
ブロック引用テキスト |
mdQuoteBorder |
ブロッククォートの境界線 |
mdHr |
横罫 |
mdListBullet |
箇条書きのリスト |
ツール差分(3色)
| トークン | 目的 |
|---|---|
toolDiffAdded |
追加された行 |
toolDiffRemoved |
削除された行 |
toolDiffContext |
コンテキスト行 |
構文強調表示 (9 色)
| トークン | 目的 |
|---|---|
syntaxComment |
コメント |
syntaxKeyword |
キーワード |
syntaxFunction |
関数名 |
syntaxVariable |
変数 |
syntaxString |
文字列 |
syntaxNumber |
数字 |
syntaxType |
種類 |
syntaxOperator |
オペレーター |
syntaxPunctuation |
句読点 |
思考レベルの境界線 (6 つは必須、1 つはオプション)
思考レベルを示すエディターの境界線の色 (微妙なものから目立つものまでの視覚的な階層):
| トークン | 目的 |
|---|---|
thinkingOff |
思考停止 |
thinkingMinimal |
ミニマル思考 |
thinkingLow |
低思考 |
thinkingMedium |
中程度の思考 |
thinkingHigh |
高い思考力 |
thinkingXhigh |
非常に高度な思考 |
thinkingMax |
最大限の思考。オプション、thinkingXhigh に戻ります |
バッシュモード(1色)
| トークン | 目的 |
|---|---|
bashMode |
bash モードのエディターの境界線 (! プレフィックス) |
HTML エクスポート (オプション)
export セクションは、/export HTML 出力の色を制御します。省略した場合、色はuserMessageBgから派生します。
{
"export": {
"pageBg": "#18181e",
"cardBg": "#1e1e24",
"infoBg": "#3c3728"
}
}色の値
次の 4 つの形式がサポートされています。
| 形式 | 例 | 説明 |
|---|---|---|
| 16進数 | "#ff0000" |
6桁の16進RGB |
| 256色 | 39 |
xterm 256 色パレット インデックス (0 ~ 255) |
| 変数 | "primary" |
vars エントリへの参照 |
| デフォルト | "" |
端末のデフォルトの色 |
256 色のパレット
0-15: 基本的な ANSI カラー (端末に依存)16-231: 6×6×6 RGB 立方体 (16 + 36×R + 6×G + Bここで R、G、B は 0 ~ 5)232-255: グレースケールランプ
端末の互換性
Pi は 24 ビット RGB カラーを使用します。最新の端末のほとんどはこれをサポートしています (iTerm2、Kitty、WezTerm、Windows Terminal、VS Code)。 256 色のみをサポートする古い端末の場合、pi は最も近い近似値に戻ります。
トゥルーカラーのサポートを確認します。
echo $COLORTERM # Should output "truecolor" or "24bit"ヒント
暗い端末: コントラストの高い、明るく飽和した色を使用します。
明るい端末: コントラストが低く、暗く落ち着いた色を使用します。
色の調和: 基本パレット (Nord、Gruvbox、Tokyo Night) から始めて、vars で定義し、一貫して参照します。
テスト: さまざまなメッセージ タイプ、ツールの状態、マークダウン コンテンツ、および折り返された長いテキストを使用してテーマを確認します。
VS コード: 正確な色を得るには、terminal.integrated.minimumContrastRatio から 1 に設定します。
例
組み込みテーマを参照してください。