テーマとターミナルの色
zerocode は名前付きカラーテーマのセットを提供し、各エージェントが Code ペインと Chat ペインで独自のテーマを持てるようにし、ターミナルが描画できる内容に合わせてカラー出力を調整します。
すべてのテーマ設定は、zerocode が接続するデーモンに関係なく、zerocode 独自の設定内に保存されます。
テーマの選択
Configペインを開き、zerocodeセクションに切り替えて、Themeタブを選択します。↑/kと↓/jで移動し、Enterを押して適用します。選択は即座に反映され、zerocodeの設定に保存されます。ハイライトされた行はテーマのパレットをインラインでプレビューし、canvas、title、heading、body、warn、toolの各ロール用のカラーブロックの帯を表示するため、適用前に色を確認できます。
利用可能なテーマ
テーマの 1 つは、レジストリエントリがないため zerocode で直接作成されます:
terminal: ターミナル自体の色を継承します。すべてのロールはターミナルのデフォルトに任され、アプリは背景の描画をスキップするため、調整済みのシェルパレットがそのまま表示されます。
実際のカラーパレットはビルド時にダッシュボードのテーマレジストリ(web/src/contexts/themes.json)から生成されます。これは zerocode、React ダッシュボード、そしてこれらのドキュメントがすべて参照する唯一の信頼できる情報源です。以下のリストは cargo xtask mdbook themes によって生成され、ビルド時に組み込まれます。これはコミットされることはありません:
ダーク: operator_dark, ayu_dark, catppuccin_mocha, cobalt2, code_red, default_dark, icy_blue, dracula, everforest_dark, flexoki_dark, gruvbox_dark, hacker_green, hazard, high_contrast_dark, kanagawa_dragon, kanagawa_wave, material_dark, monokai, night_owl, nord_dark, oled_black, one_dark, rose_pine, rose_pine_moon, solarized_dark, tokyo_night
ライト: operator_light, catppuccin_latte, default_light, everforest_light, flexoki_light, gruvbox_light, high_contrast_white, kanagawa_lotus, material_light, nord_light, one_light, rose_pine_dawn, solarized_light, tokyo_night_day
デフォルトのテーマは、macOSではterminal、それ以外のすべてのプラットフォームではicy_blueです。
[theme].name(または以下のエージェントごとのオーバーライド)が、このビルドに存在しないテーマ、タイプミス、または新しいビルドで書かれた設定を指している場合、zerocode は起動を拒否するのではなくterminalテーマにフォールバックします。
エージェント別テーマ(Code & Chat ペイン)
テーマはエージェントに連動させることができます。Code または Chat ペインが、オーバーライドを持つエージェントにフォーカスしている場合、そのペインが表示されている間は、そのエージェントのテーマがベーステーマに置き換わります。他のペインはベーステーマを維持します。これにより、どのエージェントで作業しているかが一目でわかります。
[theme.agent_override.<alias>] の下にオーバーライドを設定します:
UIからのオーバーライドの設定
Configペインのzerocodeセクションで、Agent Themesタブを開きます。デーモンの有効なエージェントが、各エージェントの現在のオーバーライド(なしの場合は—)とともに一覧表示されます。フッターにはキーが表示されます。
- エージェント上で
Enterを押すと、割り当てモードで Theme リストが開きます(タイトルはTheme → <agent>)。テーマを選択すると、そのエージェントに割り当てられます。 dキーで、ハイライトされたエージェントのオーバーライドをクリアします。
割り当てとクリアはライブで適用されます。Code/Chatペインは zerocode を再起動せずに次のフレームで再テーマ化され、zerocode の設定に保存されます。不明なテーマを指定したオーバーライドは、グローバル設定と同様に terminal テーマにフォールバックします。
ターミナルの色深度
zerocode は、ターミナルが表示できる色数を検出し、最初の描画時に一度だけ出力を適応させます。
- トゥルーカラー (24-bit) は実質的にすべてのターミナルでデフォルトとなっています。zerocode は 24-bit カラーを出力し、モダンなターミナルや、それ用に設定されたターミナルマルチプレクサが直接レンダリングします。
- xterm-256 は、24ビットカラーに対応していない macOS の Terminal.app(
TERM_PROGRAM=Apple_Terminalで検出)で使用されます。iTerm2、kitty、WezTerm、Ghostty、その他のトゥルーカラー対応ターミナルには影響しません。 - ANSI-16 は、本当に色数の少ないターミナルでのみ使用されます。
TERMが未設定、またはdumb、ansi、あるいは*-16colorのような値の場合です。テーマカラーは、16 の ANSI カラーのうち最も近い色に変換されます。
trueカラー未満の色深度が有効な場合、テーマ設定されたすべての色(プレビューのスウォッチを含む)は、描画可能な最も近い値にスナップされます。
深度の強制
検出を上書きするには ZEROCODE_COLOR を設定します:
| 値 | 深度 |
|---|---|
truecolor、24bit、24 | 24ビットトゥルーカラー |
256 | xterm-256 |
16、ansi | 16 ANSIカラー |
sh
ZEROCODE_COLOR=256 zerocode
認識されない値は無視され、通常の検出が実行されます。
tmux: 色が正しく表示されない、または色あせて見える
tmux 内で zerocode を実行している場合(一般的には SSH 経由で Raspberry Pi やその他のリモートホストに接続している場合)、パレットがフラットまたはほぼモノクロで表示されるとき、その原因はほぼ常に tmux が外側のターミナルに対して truecolor(RGB)サポートをアドバタイズしていないことにあります。zerocode は 24 ビットカラーを出力しますが、tmux はターミナルが RGB をサポートしていると認識している場合にのみ、それをターミナルへ転送します。
リモートマシンの ~/.tmux.conf に以下を追加して、クライアントが RGB をサポートしていることを tmux に伝えます:
set -as terminal-features ",*:RGB"
変更を反映するには、tmux サーバーを再起動します。
sh
tmux kill-server
再アタッチすれば、zerocodeのトゥルーカラー出力が正しく表示されます。
tmux の変更を必要としない代替手段として、truecolor のパススルーに依存しないより低い色深度を強制します:
sh
ZEROCODE_COLOR=256 zerocode