コンテンツにスキップ

テーマ

pi はテーマを作成できます。セットアップ用のテーマを作るよう依頼してください。

テーマは TUI の色を定義する JSON ファイルです。

Pi は次の場所からテーマを読み込みます:

  • 組み込み:darklight
  • グローバル:~/.pi/agent/themes/*.json
  • プロジェクト:.pi/themes/*.json(プロジェクトが信頼された後のみ)
  • パッケージ:themes/ ディレクトリまたは package.jsonpi.themes エントリ
  • 設定:ファイルまたはディレクトリを含む themes 配列
  • CLI:--theme <path>(繰り返し可能)

--no-themes で探索を無効化します。

/settings または settings.json でテーマを選択:

{
"theme": "my-theme"
}

初回実行時、pi はターミナルの背景を検出し、dark または light をデフォルトにします。

  1. テーマファイルを作成:
Terminal window
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json
  1. すべての必須色を含めてテーマを定義(カラートークンを参照):
{
"$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",
"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",
"bashMode": "#ffaa00"
}
}
  1. /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 個すべての必須トークンを定義する必要があります。

$schema フィールドはエディターの自動補完と検証を有効にします。

すべてのテーマは 51 個すべてのカラートークンを定義する必要があります。任意の色はありません。

トークン用途
accentプライマリアクセント(ロゴ、選択項目、カーソル)
border通常のボーダー
borderAccentハイライトされたボーダー
borderMuted控えめなボーダー(エディター)
success成功状態
errorエラー状態
warning警告状態
mutedセカンダリテキスト
dim第三レベルのテキスト
textデフォルトテキスト(通常は ""
thinkingText思考ブロックのテキスト
トークン用途
selectedBg選択行の背景
userMessageBgユーザーメッセージの背景
userMessageTextユーザーメッセージのテキスト
customMessageBg拡張メッセージの背景
customMessageText拡張メッセージのテキスト
customMessageLabel拡張メッセージのラベル
toolPendingBgツールボックス(保留中)
toolSuccessBgツールボックス(成功)
toolErrorBgツールボックス(エラー)
toolTitleツールタイトル
toolOutputツール出力テキスト
トークン用途
mdHeading見出し
mdLinkリンクテキスト
mdLinkUrlリンク URL
mdCodeインラインコード
mdCodeBlockコードブロックの内容
mdCodeBlockBorderコードブロックのフェンス
mdQuote引用ブロックのテキスト
mdQuoteBorder引用ブロックのボーダー
mdHr水平線
mdListBulletリストの箇条書き
トークン用途
toolDiffAdded追加された行
toolDiffRemoved削除された行
toolDiffContextコンテキスト行

シンタックスハイライト(9 色)

Section titled “シンタックスハイライト(9 色)”
トークン用途
syntaxCommentコメント
syntaxKeywordキーワード
syntaxFunction関数名
syntaxVariable変数
syntaxString文字列
syntaxNumber数値
syntaxType
syntaxOperator演算子
syntaxPunctuation句読点

思考レベルを示すエディターボーダーの色(視覚的階層は控えめから目立つまで):

トークン用途
thinkingOff思考オフ
thinkingMinimal最小思考
thinkingLow低思考
thinkingMedium中思考
thinkingHigh高思考
thinkingXhigh超高思考
トークン用途
bashModeBash モードでのエディターボーダー(! プレフィックス)

export セクションは /export HTML 出力の色を制御します。省略した場合、色は userMessageBg から派生します。

{
"export": {
"pageBg": "#18181e",
"cardBg": "#1e1e24",
"infoBg": "#3c3728"
}
}

4 つの形式がサポートされています:

形式説明
Hex"#ff0000"6 桁の hex RGB
256 色39xterm 256 色パレットインデックス(0-255)
変数"primary"vars エントリへの参照
デフォルト""ターミナルのデフォルト色
  • 0-15:基本 ANSI 色(ターミナル依存)
  • 16-231:6×6×6 RGB キューブ(R、G、B が 0-5 の 16 + 36×R + 6×G + B
  • 232-255:グレースケールランプ

Pi は 24 ビット RGB 色を使用します。ほとんどのモダンターミナルがこれをサポートしています(iTerm2、Kitty、WezTerm、Windows Terminal、VS Code)。256 色のみをサポートする古いターミナルでは、pi は最も近い近似値にフォールバックします。

truecolor サポートを確認:

Terminal window
echo $COLORTERM # Should output "truecolor" or "24bit"

ダークターミナル: 明るく彩度の高い色を使い、コントラストを高くします。

ライトターミナル: 暗く落ち着いた色を使い、コントラストを低くします。

カラーハーモニー: ベースパレット(Nord、Gruvbox、Tokyo Night)から始め、vars で定義し、一貫して参照します。

テスト: さまざまなメッセージタイプ、ツール状態、Markdown コンテンツ、長い折り返しテキストでテーマを確認します。

VS Code: 正確な色のために terminal.integrated.minimumContrastRatio1 に設定します。

組み込みテーマを参照: