コンテンツにスキップ

設定リファレンス

konoma は 1 つの TOML ファイルを読みます:

~/.config/konoma/config.toml

すべて任意です — 設定ファイルが無くても動きます。ファイルが無い/壊れていても 起動は失敗せず、以下の既定値へフォールバックします(不正な値はキー単位で既定へ)。 全キーにコメント付きの実例が config.example.toml にあります(英語)。日本語コメント版は config.example.ja.toml です。出発点としてコピーしてください:

Terminal window
mkdir -p ~/.config/konoma
cp config.example.toml ~/.config/konoma/config.toml
[ui]
lang = "jp" # UI 言語("auto" は OS に追従)
wrap = false # 折返しなし。長い行は h/l で横スクロール
line_numbers = true
details = ["size", "modified"]
[ui.theme]
bg = "#282c34"
[keys]
copy_prefix = "y"
キー 既定 説明
show_hidden false 起動時から隠しファイルを表示(実行時は . で切替)。
tabbar "auto" タブバー表示: "always" / "auto"(2枚以上のときだけ) / "hidden"
icons true ツリー・Markdown リンク・チェックボックスの Nerd Font アイコン。Nerd Font が無い端末では false に — プレーン記号にフォールバックします(豆腐は出ません)。
wrap true テキストプレビューの折返し。false = 折返さず横スクロール(h/l0/$)。
line_numbers false コード/テキストプレビューの行番号ガター。
git_gutter true 未コミット変更ファイルのプレビューにエディタ風の変更ガター(緑=追加/青=変更/赤=削除)。
tab_width 4 プレビューのタブ幅(0 で生タブのまま)。
syntax_highlight true コードのシンタックスハイライト(false = 素のテキスト・最速)。
preview_loading "indicator" 重いコードの初回表示: "indicator"(ロード表示) / "progressive"(先に素のテキスト、色は後から)。
path_style "relative" タイトルのパス表示: "relative" / "home"(~/...) / "full"。実行時は p で巡回。
keys "vim" プレビューのページ送り流儀: "vim"(Ctrl-f/bCtrl-d/u) / "less"(f/bd/uSpace)。
lang "auto" ヘルプ/ヒント/メッセージの言語: "auto"(OS の言語) / "en" / "jp"
statusbar "split" ステータス表示の配置: "split"(上=コンテキスト・下=ヒント) / "bottom" / "top"
image_render_scale 1.0 画像表示のスケール(0.1〜1.0)。小さいほど端末への転送ピクセルが減り速い(表示も小さい)。
svg_max_px 800 SVG ラスタライズの最大辺(px)。大きいほど精細だが重い。
details [] ツリー各行のメタデータ列(順序どおり)。"size" "modified" "perm" "type" "items"(ディレクトリ内件数)。
graph_max_branches 12 コミットグラフ(og)の同時描画ブランチ上限。0 = 無制限。実行時はグラフ内 b で切替。
graph_base_branches [] 基準ブランチの候補(優先順)。例 ["main", "develop"]。グラフでは最初に存在するものが基準(レーン0固定)になり、配列順が表示優先順になります。ワークツリーの差分(o wd)ではこれらを候補として扱い、そのワークツリーと共通祖先が最も新しいものを選ぶので、配列順は同点時の優先順だけに効きます。
commit_meta_align "right" log/グラフの author・日付: "right"(右端の揃った列) / "inline"(件名の直後)。
confirm_quit true 終了前に確認(q/y/Enter=終了・n/Esc=取消・qq で素早く)。false = 即終了。
confirm_jj_sync true ハブで R を押して jj に作業コピーを取り込ませる前に確認する。konoma が jj リポジトリに書き込むのはここだけで、しかも指示されたときのみ。konoma 自身では気づけない「更新時刻が変わらないまま中身が変わった」ファイルのための逃げ道。false = 確認なしで取り込む。
confirm_bookmark_overwrite true ブックマーク(m)が既存の別のパスを上書きするときに確認(y/Enter=上書き・n/Esc=取消)。同じパスの再登録・未使用キーは確認なし。false = 確認なしで即上書き。
csv_rainbow true CSV/TSV テーブルの列レインボー。false = 単色(整列・セル移動はそのまま)。
filter_mode "fuzzy" / のツリー絞り込みの照合方法。"fuzzy" = 飛び石一致をスコア順に並べる(fzf 流・空白区切りの語は AND)、"substring" = 従来の単純な部分一致。どちらも大文字小文字は無視。
follow_view "diff" フォローモード(F)がジャンプ先をどう開くか: "diff"(フォロー開始時点からの全画面 diff — 開始前からあった未コミット変更は隠れる。diff 内 f でフル git diff に切替え可能) / "file"(通常プレビューで最初の変更ハンクへスクロール)。diff の無いファイルとメディアは常に "file" 相当。
busy_indicator true バックグラウンド処理(git 無視ファイルスキャン・メディア読込・ハイライト準備・画像取得)の実行中だけ、右上にスピナーとジョブ名を表示。アイドル時は何も出ず負荷もゼロ。実行中のファイル操作(コピー/移動/複製/削除とその N/M 進捗)だけは、この設定に関わらず常に表示する — 裏の家事ではなく、待っているものそのものなので。
mermaid "image" mermaid 図の描画方法。"image" は純 Rust でプロセス内ラスタライズ(mermaid.js 品質・ブラウザ/Node 不要): 単体 .mmd は全画面(ズームはズーム率に合わせて再ラスタライズ=拡大してもシャープ)、Markdown 内の ```mermaid フェンスはインライン表示(Tab でフォーカス=シアンの枠+図全体へ自動スクロール。+/-=その場ズーム(レイアウト不変)・ズーム中 hjkl=パン・0=フィット・Enter=全画面・q=戻る)。"text" は従来の Unicode 罫線描画。未対応の図・描画失敗・画像非対応端末は自動でテキストに降格。
mermaid_theme "dark" 画像モードの図の配色テーマ: "dark""light""classic"(mermaid.js 既定)・"forest""neutral"。背景は常に透過(端末背景に馴染む)。mermaid_routing = "konoma-orthogonal" のときは無効(このモードは常に konoma 独自の設計配色を使う)。
mermaid_curve "basis" flowchart の辺の線の形 — mermaid の flowchart.curve(mermaid で最も要望の多い flowchart 機能=スプラインでなく直線・直角の線、mermaid-js#2817 / #2549)。mermaid 自身が持つ曲線名 13 種すべてに対応済み。未知の値は "basis" にフォールバックする。"basis"(既定)は滑らかなスプラインで、この設定を変えない限り見え方は変わらない。"linear" は経由点を直線で結ぶ。"step""stepBefore""stepAfter" は直角の線で、角の位置(中間点/先に垂直/先に水平)が異なる。"natural""cardinal""catmullRom" は経由点をすべて通る滑らかなスプライン。"monotoneX""monotoneY" は経由点を行き過ぎない滑らかなスプラインで、指定した軸方向。"bumpX""bumpY" は経由点どうしを指定した軸方向の S 字カーブで結ぶ。"rounded" は直線区間+角だけ小さく丸める形(mermaid 独自の曲線・d3-shape 由来ではない)。曲線の指定は 3 段階(弱い順): この設定 < 図側の %%{init: {"flowchart": {"curve": "..."}}}%% ディレクティブ < 特定の辺だけを指す linkStyle <n> interpolate <curve>。この設定を読むのは flowchart 自身の辺だけ。
mermaid_routing "splines" flowchart の辺の配線方法 — konoma 独自の拡張。上の mermaid_curve(線の“形”だけを決める)とは独立。"splines"(既定)は従来の mermaid のレイアウトで、辺は図自身の曲線(mermaid_curve)に従う。この設定を変えない限り見え方は変わらない。"konoma-orthogonal" は konoma 独自の直交配線ルータ(flowchart と stateDiagram-v2・他の図種には影響しない)。すべての辺は 90° でのみ曲がり、角は鋭角(半径0)、ノード・サブグラフ枠へは常に垂直に入射する(斜めに刺さらない)。判定ノード({})は菱形でなく面取り矩形(角を6px面取り)で描かれ、すべての辺が平坦な面に着地する。同じ辺に複数本つく場合は16px間隔のポートへ等分配し、足りなければその軸方向へノードを拡大する。隣接ランク間の直進辺は共通の中心線に整列する=曲げ0の完全な直線レーン。辺どうしが交差する箇所では、上を跨ぐ側(戻り辺・補助辺)に12pxの隙間が開き、線の上下関係が一目でわかる。戻り辺・補助辺は図の外周レーン(全要素の16px外側・複数本は8pxずつずらす)を回る。ラベルは線上のプレートに乗り、その区間はラベル幅+余白の最低長を確保する(足りなければランク間隔が自動で広がる)。矢尻は辺自身の色(linkStyle/classDef 適用後)で塗られ、先端はノード枠の1px手前で止まる。名前の由来は ELK の edgeRouting: ORTHOGONAL と Graphviz の splines=orthokonoma- 接頭辞は konoma 独自仕様の値であることの印で、将来 mermaid 本家が “orthogonal” を定義しても衝突しない。このモードでは mermaid_curve は無効。このモードは konoma 独自の設計配色・スタイル(ダークなノード塗り+角丸+細い枠線・破線のサブグラフ枠・classDef/style の色をノード枠/辺/矢尻/ラベルへ一貫適用)にも自動で切り替わり、mermaid_theme はここでは無効。未知の値は "splines" にフォールバックする。
mermaid_rows 24 Markdown 内インライン mermaid 図の表示高さの上限(行数)。図は本文と同じ文字の大きさになる自然なサイズで表示され、拡大はしない(小さい図は小さいまま)。自然サイズがこの上限や本文幅を超えるときだけ、縦横比を保って縮小する。ベクタ由来なのでズーム時は必要密度へ自動再ラスタライズされシャープなまま(表示サイズ自体は変わらない)。初期表示はビューポートにもフィット=窓がこの上限より低いときはさらに全体が見える高さへ縮む。0/不正値は既定に戻る。
math "image" LaTeX 数式の描画方法。"image"(既定)は $…$ / $$…$$ を RaTeX(純 Rust・KaTeX 品質・ブラウザ/Node 不要)でプロセス内ラスタライズしインライン画像で表示(インライン数式は常に通常の Markdown と同じく文中に置く・幅が広すぎる式は利用可能幅まで縮める・持ち上げない・ディスプレイ数式は中央寄せ)。"text" は生 LaTeX を素テキストのまま。画像非対応端末・描画失敗は自動で生 LaTeX へ降格。
math_color "#d0d0d0" 画像モード数式のグリフ色。RaTeX は数式を純黒で塗るため、ダーク端末では不可視。konoma はダーク端末前提なので、透過背景の上にこの色で塗り替える(端末背景が透ける=mermaid と同じ)。ライト端末では暗い色(例 "#202020")を指定する。usvg が解釈する色(#hexrgb(…)・CSS 色名)を受け付け、不明な値や完全透過はタイプミスでも数式を空白にせず既定へフォールバックする。
restore_tabs true 起動ディレクトリ毎に前回のタブ構成(各タブの root・ツリーカーソル・プレビュー)を保存し、同じディレクトリでの次回起動時に復元。保存はタブの開閉/切替と終了時、保存先は ~/.config/konoma/sessions/false で常にまっさらに起動(読みも書きもしない)。
restore_single_tab true restore_tabs が有効なときのみ意味を持つ: タブが1枚だけのセッションも保存/復元するか。false にすると単一タブのセッションは保存しない — 1枚だけの状態で終了するとそのディレクトリのセッションファイルが削除され、次回はまっさらに起動する(2枚以上のタブがあるセッションは引き続き保存/復元される)。
tree_cursor "origin" 親ディレクトリへ移動した(h)あと、カーソルがどこに乗るか。"origin" は出てきたディレクトリの行に乗る(プレビューから q で戻る時と同じ発想=出てきた場所へ戻る。先頭ではない)。"top" は従来どおり常に先頭の行(旧来の挙動)。未知の値は "origin" として扱う。出てきたディレクトリが親の一覧に無い場合(隠しディレクトリで show_hidden=false 等)は先頭にフォールバックする。ディレクトリへ下りる(l)方は常に先頭から始まる(下りる先には「戻る場所」が無いため)、これは変わらない。
md_task_states [" ", "x"] Markdown チェックボックスで Space が巡回する状態(順序どおり・各要素1文字)。例 [" ", "/", "x"] で Obsidian 流の作業中状態([/] 表示)。不正な設定は既定へ。
md_autolink true Markdown プレビューで裸の URL・メールを自動リンク化(GFM autolink・GitHub と同じ)。素の https://… / www.… / foo@bar.com がフォーカス可能なリンクに(Tab で移動・Enter で開く)。コード span / コードフェンス内はリンク化しない。false で素テキストのまま。
md_alerts true GitHub 形式のアラートを色付きコールアウト箱(アイコン+ラベル)で描く(素の引用でなく)。マーカー(大小無視+一般的な別名): > [!NOTE] / [!TIP] / [!IMPORTANT] / [!WARNING] / [!CAUTION]false で通常の引用(マーカーはそのまま)。
md_emoji true Markdown プレビューで :shortcode: 絵文字を実 Unicode に変換(GitHub と同じ・:rocket: → 🚀)。Unicode を持たない GitHub 独自ショートコード(:shipit: 等)とコード内はそのまま。絵文字幅が桁揃えを崩す場合は false
md_frontmatter true 先頭の YAML front matter(------ が文書の最初)を認識し、罫線+生YAML でなくコンパクトな dim メタデータ block として表示。false なら通常の Markdown として描く。
md_footnotes true GFM 脚注を描く: text[^1] の参照は上付き番号になり、[^1]: … の定義は末尾の番号付き脚注節にまとまる。false ならリテラル表示。
md_inline_html true Markdown エンジンが剥がす一般的なインライン HTML を描く: <del>/<s>/<strike>=打消し線・<kbd>=インラインコードのキーキャップ・<sup>/<sub>=Unicode(対応する文字のみ)・<br>=ハード改行。(<mark>/<ins> はどちらでもテキストのみ。)false なら全タグを剥がす。
md_details "auto" <details> の初期表示。"auto" は GitHub と同じく open 属性を尊重(<details> 折りたたみ / <details open> 展開)・"open" 常に展開・"closed" 常に折りたたみ。いずれも Tab<summary> にフォーカス→Space/Enter でトグル。
md_table_align "left" Markdown プレビューで表の箱をどこに置くか: "left"(左端から罫線が始まる)・"center""right"。GFM のパイプ表も HTML の <table> も箱ごと動き、セル内の画像も一緒に動く。セルの中の整列は変えない(列の :---: や HTML の align= がそのまま支配する)。プレビュー幅以上の表は左寄せのまま。
md_image_align "center" Markdown プレビューでブロック画像をどこに置くか: "left""center""right"。単独の ![alt](url)・バッジの並び・mermaid フェンスの図(キャプションとフォーカス枠も追従)が対象。表のセル内の画像(セル自身の整列が支配)と数式(display の中央寄せは組版の約束事)は対象外。プレビュー幅以上の画像は左寄せのまま。
キー 既定 説明
key "name" 並び替え基準: "name" / "size" / "modified" / "ext"
reverse false 降順にする。
dirs_first true ディレクトリを先頭にまとめる。

実行時は s メニュー(n/s/m/er=昇降・.=フォルダ先頭)で変更できます。

色は "#rrggbb"・色名("black""lightblue" …)・端末インデックス("8")・ "none" で指定します。

キー 既定 説明
bg "none" アプリ背景。"none" は端末の既定背景のまま(透過設定も活きます)。
code_bg "#2b303b" Markdown コード(インライン+ブロック)の背景帯。"none" で無し。
code_label_align "right" コードブロックの言語バッジ位置: "right" / "left"
code_label_bg "auto" 言語バッジ背景: "auto"(code_bg を明るく) / "none" / 任意の色。
code_theme "TwoDark" ハイライトテーマ(コードと md フェンス共通)。他に "OneHalfDark" "Dracula" "Nord" "gruvbox-dark" "Catppuccin Mocha" "Monokai Extended" "Solarized (dark)" "GitHub" など。区切り/大小文字は無視・不明名は TwoDark。

[[preview.rules]] — ファイル種別ごとの表示方法

Section titled “[[preview.rules]] — ファイル種別ごとの表示方法”

konoma の中核モデル: フォーマット→ビューアを TOML で宣言します。ルールは上から 評価され、最初にマッチしたものが使われます。glob(ファイル名・大文字小文字無視)か mime(内容判定・例 "image/*")でマッチし、内蔵レンダラか外部コマンドで描画します。

注意: config に [[preview.rules]] を1つでも書くと、その一覧が既定ルールを 置き換えます。1件だけ足すのではなく、config.example.toml の全ルールを コピーして編集してください。

内蔵レンダラ(builtin = "..."):

名前 描画するもの
markdown 装飾 Markdown(見出し・表・リンク・チェックボックス・インライン画像・```mermaid フェンスは図に)。
mermaid 単体 .mmd/.mermaid を図として表示。既定は実画像(純 Rust・全画面ズーム/パン)。[ui] mermaid = "text" で Unicode 罫線図に切替。
image 端末のグラフィックプロトコルで全画面表示(ズーム/パン・GIF は自動アニメ)。
svg プロセス内でラスタライズ(resvg・純 Rust)して画像表示。
video 代表フレーム1枚をサムネイル表示。.mp4/.m4v/.mov.mkv/.webm の H.264 と HEVC は純 Rust でデコード=外部ツール不要(HEVC=iPhone の既定録画形式)。それ以外(VP9・AV1・旧世代コーデック・.avi コンテナ、および稀なプロファイル=H.264 の 10bit/4:2:2/4:4:4/モノクロ、Main/Main 10 4:2:0 以外の HEVC)は ffmpegthumbnailer/ffmpeg があれば使い、無ければヒント表示。いずれも端末内再生はしないので、再生したい場合は commandmpv へ。
pdf 純 Rust(hayro)でネイティブにラスタライズ(外部ツール不要・1ページずつ) — J/K で任意のページへ。macOS に限り、hayro が描画できない PDF(暗号化・破損など)は OS 同梱の qlmanage/sips(常在・導入不要)へフォールバックしますが、これらは1ページ目しか出せません。
csv / tsv 列レインボー+セルカーソルの整列テーブル(hjkl 移動・y → でコピー)。
archive .zip/.tar/.tar.gz/.tgz のエントリ(名前 / サイズ / 更新日時)を CSV/TSV と同じ整列テーブルで一覧表示 — メタデータのみで展開はしません(hjkl / y → c/r/C も同様に効きます)。
code シンタックスハイライト(文法は 拡張子 → ファイル名 → 先頭行 で解決)。
text 素のテキスト。テキストらしいファイルの自動フォールバック先でもあります。

外部コマンド委譲:

[[preview.rules]]
glob = "*.{mp4,mov}"
command = "mpv {path}" # {path} = 対象ファイル, {out} = 一時出力パス
detached = true # TUI をブロックしない(別プロセスで開く)
[[preview.rules]]
glob = "*.{dot,gv}" # Graphviz は内蔵が無いので委譲する。
render_as = "image" # (mermaid はルール不要=konoma が内蔵で描く。) render_as=出力を画像として表示
command = "dot -Tpng -o {out}.png {path}" # シェルを経由しないので < > によるリダイレクトは書けない

render_as を省略する(または "image" 以外を指定する)と、コマンドの出力をキャプチャして 通常の windowed リーダーでテキスト表示します。コマンドが不在/失敗(非ゼロ終了・{out} 未生成) した場合はクラッシュせず、安全に [can not preview: <ext>] へ降格し理由が添えられます。

mermaid にはルールは要りません。 konoma は .mmd/.mermaid ファイルも ```mermaid フェンスも自前で描きます(純 Rust・Node もブラウザも不要)。挙動は上の [ui] mermaid 系で調整できます。そのうえで「mermaid.js そのものの出力が欲しい」 (mermaid.live や GitHub と同じエンジンで描かせたい)場合は、単体ファイルを公式 CLI の mmdc へ委譲できます:

[[preview.rules]]
glob = "*.{mmd,mermaid}" # 既定の builtin = "mermaid" ルールを置き換える
render_as = "image"
command = "mmdc -q -i {path} -o {out}.png -t dark -b transparent -s 3"

-i/-o は入力/出力ファイル(出力の拡張子から svg/png/pdf を判別)、-t はテーマ (default / forest / dark / neutral)、-b は背景色、-s は Puppeteer のスケール係数 (3 = 3倍で描画。ズームしても解像度に余裕が残る)、-q は mmdc の進捗ログを抑制します (これが無いとエラー行に混ざります)。{out} は意図的に拡張子を持たないので、 {out}.png と自分で付けた .png が mmdc への形式指定になります — konoma はその接尾辞つき 成果物を受け取ります。

konoma が頼る他のツールと違い、mmdc は重い依存です。 導入は npm install -g @mermaid-js/mermaid-cli、Node 18.19+ / 20+ が必要で、Puppeteer 経由で実際の ブラウザを動かします。つまりインストール時に Chromium が同梱で降ってきて、プレビューのたびに それが起動します — 図の表示は即座ではなく 1〜2 秒かかると考えてください(委譲したコマンドは 30 秒で打ち切られます)。konoma 内蔵の mermaid 経路にはこれらは一切要りません。承知のうえで 選んでください。

このルールの限界が 2 つあります:

  • 対象は単体ファイルだけです。Markdown 内の ```mermaid フェンスは markdown レンダラが合成するので、常に konoma 内蔵の経路を通ります([[preview.rules]] はファイル 単位のマッチなので、ファイルの中までは届きません)。
  • *.md に向けないこと。mmdc は Markdown を入力すると、図を1枚出すのではなく文書全体を 書き換えます(各フェンスを生成した画像ファイルへ差し替える)。プレビューの用途には合いません。

mmdc が入っていない場合は、他の不在コマンドと同じように安全に降格します。 [external] preview_commands = false にすれば(他の委譲もろとも)無効化でき、ルール一覧を 書き換える必要はありません。

どのルールにも合わずテキストにも見えないファイルは、安全な [can not preview: <ext>] 画面になります — konoma は未知の入力でクラッシュせず、 任意ツールの不在はヒント表示に降格します。

konoma はファイル内容を自分では編集しません。e はあなたのエディタに委譲します。

[editor]
command = "nvim" # 全体の既定
[editor.ext]
md = "code -w" # 拡張子ごとの上書き(ドット無し)
rs = "nvim +{line} {path}" # {line} = プレビューで見ていた行

解決順: [editor.ext]editor.command$VISUAL$EDITORvim。 値はコマンド+引数(空白区切り)。{path} があれば置換、無ければ末尾に追加されます。

プレビューの表示行で開く。 windowed プレビュー(素のテキスト・コード・R の生 Markdown)から e を押すと、キャレット行でエディタが開きます。{line} トークンで行の渡し方を明示できます (code -g {path}:{line}hx {path}:{line}nvim +{line} {path})。{line} が無くても 主要エディタは自動対応します — vim 系(+N+その行を画面先頭へスクロールする zt)・ VS Code(-g path:N)・Sublime/Helix/Zed(path:N)。それ以外のエディタは先頭で開きます。 装飾 Markdown はソースを折返し直すため、画面先頭に見えているテキストをソースから探して 該当行に着地します(R の生ソースなら正確なキャレット行)。リンク/チェックボックス/ コードブロックを Tab でフォーカスして画面内にあるときは、そのアイテムの行で開きます。 Mermaid と画像は常に先頭です。

キー 既定 説明
tool "lazygit" 変更ハブ内の ! で起動する外部 git ツール(コマンド+引数)。
diff "unified" diff の初期レイアウト: "unified"(縦) / "split"(左右) / "auto"(幅で判断)。実行時は diff 内 s で巡回。
worktree_dir "../" ワークツリー一覧の n が新しいワークツリーを作る場所。メインワークツリー基準で解決されるので、どのワークツリーから作っても位置がぶれません。ディレクトリ名はブランチ名(/- に置換)。リポジトリ内を指すこともできますが、その場合は .gitignore.git/info/exclude への登録が自分で必要です(konoma は書き足しません)。

プレビュー版。 ツリー・diff・ハブは一通り揃っているが、jj workspace の一覧は未対応で、 jj 自体が 1.0 前・月次で破壊的変更がある。konoma はバージョンを決め打ちせず、起動時に一度 jj を試して、答えられなければ git に落ちる。

git に対応するものが無い設定だけを置く。jj リポジトリの扱いはそれ以外すべて [external] vcs と jj 自身が決める。konoma は jj リポジトリを読むだけで、全呼び出しに --ignore-working-copy が付くため 作業コピーをスナップショットせず、書き込み系のキーは提示しない。

キー 既定 説明
tool "lazyjj" ハブで ! を押したときに起動する外部 jj ツール([git] tool の jj 版)。未導入なら起動できなかった旨を flash する。

[external] — 外部プロセスの on/off スイッチ

Section titled “[external] — 外部プロセスの on/off スイッチ”

konoma が起動する外部プロセスを1個ずつ on/off できます。全キーの既定は true[external] セクション自体が無い、あるいは中の項目が無い場合も既定は true のまま なので、何も書かなければ挙動は変わりません。

キー 既定 説明
git true git 連携: status の色・ガター・Git ビュー・stage/unstage/commit/checkout/branch(src/git.rs・git CLI + 組込み git2/libgit2 経由)。false--no-default-features(git feature 無し)でビルドしたのと全く同じ挙動(読み取りは全て空/None、書き込みは全てエラー)。o(Git ビューを開く)は「repo でない」とは別の文言で無効を知らせます。なおこの設定に関わらず、git 実行ファイルが見つからない環境では git 連携は自動でオフになります(初回使用時に一度だけ判定)。その場合 o は「ディレクトリが repo でない」ではなく「git が見つかりません」と知らせます。
git_tool true ! で起動する外部 git ツール(上の [git] tool・既定 lazygit)。
vcs "auto" どのバージョン管理システムが答えるか。jj 対応はプレビュー版(git スイートのガイド)。"auto" は git が答えられる場所を git のままにするので、今まで動いていたリポジトリの見え方は変わらない。jj が答えるのは git のリポジトリが無い場所だけ(jj git init --no-colocate で作ったもの・jj workspace)。"git" は常に git。"jj".jj があれば colocated でも jj——実際に jj で作業しているならこれ。jj バイナリが無い環境では git に落ちる。
pdf true 外部フォールバックのラスタライザ(macOS 同梱の qlmanage/sips)。主レンダラ(hayro・純 Rust・このフラグに関係なくプロセス内で解析/描画)がその PDF の1ページ目を描画できなかった時(暗号化・破損など)だけ試されます。false にするとこれらの外部ツールは一切起動しませんが、PDF プレビュー自体(ページ描画・ページ数取得)は hayro により動作し続けます。macOS 以外ではこのフラグは実質無効です(起動する外部 PDF ツールがそもそも無いため)。
video true 外部フォールバックの抽出ツール(ffmpegthumbnailer/ffmpeg)。内蔵デコーダ(純 Rust・このフラグに関係なくプロセス内で常に動く)が扱えないファイル=.mp4/.m4v/.mov.mkv/.webm の H.264/HEVC 以外の時だけ使う。false でもそれらを起動しないだけで、これらのコンテナの H.264/HEVC のサムネイルは出る(上の pdfhayro の関係と同じ)。
remote_images true Markdown 内の http(s):// 画像取得。konoma が行う唯一の外向きネットワーク通信です。curl 等の外部プロセスではなく ureq(rustls)でプロセス内実行します。
open_links true URL/ファイルを OS のハンドラで開く(macOS は open、それ以外は xdg-open)。Markdown リンク・パス貼付ジャンプ(P)等。
preview_commands true [[preview.rules]] command = "..." への委譲。false にすると、そのルールは「マッチしなかった」扱いになり [can not preview] へ落ちます(markdown/image/pdf 等の builtin レンダラには影響しません)。

無効化された機構は、任意ツールが不在のときと同じ形で安全に降格します: PDF/動画は 既存の「表示できません」ヒントへ、無効化したリモート画像は画像の代わりにテキストの プレースホルダへ、無効化した command ルールは [can not preview] へ — クラッシュは しません。

「1つだけ止めたい」場合も [[preview.rules]] で個別に対処しようとしないこと。上で 触れたとおり、ユーザー定義ルールを1つでも書くと既定のルール一覧が丸ごと置き換わる ため、PDF や動画だけを狙って止めることができず、Markdown・画像・CSV 等も一緒に 効かなくなります。

[ui] lang は既に「明示 / "auto"」の切替を持っています(OS 言語取得は sys-locale クレート経由 — 外部プロセスは起動しません)。lang を明示 ("en"/"jp")すればこの取得自体が呼ばれないため、[external] に専用フラグは 足していません。

すべてのコマンドが再割当できます。モデルは「画面(surface)ごとに キー → アクション を割り当てる」helix 流:

[keys.tree]
"J" = "navigate:half_down" # 大文字 = Shift 込み
"ctrl-g" = "open_git_view" # ctrl-x / c-x
"space d" = "file_delete" # 2 トークン = 和音(リーダー + キー)
"o" = "noop" # 既定の割当を消す
[keys.global] # 入力面以外の全画面が継承
"Q" = "quit"

面(surface)名: globaltreetree_visualpreview_textpreview_text_visualpreview_imagepreview_tabletable_cell (preview_tableEnter を押して開くセル全文ポップアップ)・sortbookmarkstabsoutlineinfohelp、および(git ビルドで)preview_git_diffgit_changesgit_loggit_graphgit_graph_pickergit_branchesgit_worktrees(変更ハブの w で開くリンクワークツリー一覧)・git_detail

キー表記: 単文字(大文字=Shift 込み)・space・リテラル 0 $ ! + - = . / '・ 修飾 ctrl-<k>(別名 c-<k>)・名前付き tab enter esc backspace delete up down left right home end pageup pagedown。空白区切りの 2 トークンは和音 ("y f" = y のあと f)。Esc/Enter/Tab/矢印とテキスト入力中のキーは固定で 再割当できません。

アクション名は snake_case の文字列です — 注釈付きの全一覧は config.example.toml にあります。主なグループ:

  • 移動: navigate:down|up|top|bottom|page_down|page_up|half_down|half_up|left|right|line_home|line_end
  • ツリー: quitclose_tab_or_quittree_descendtree_leavetree_activatefilter_starttoggle_hiddenrefreshopen_sort_menutoggle_inforequest_editcycle_path_styleset_anchorreset_anchorenter_visualtoggle_selectopen_in_new_tab(Ctrl-t=カーソル下のエントリを別タブ(前面)で開く)
  • ブックマーク: mark_set(m)・mark_jump(' = 一覧を開く。一覧内の素の英字はジャンプ)・bookmark_edit(ctrl-e)・bookmark_delete(ctrl-d)・bookmark_closem/' はツリーとプレビューの両面に既定割当(プレビューでは表示中ファイルを登録)。
  • パスコピー(y リーダー): copy_namecopy_relativecopy_fullcopy_parentcopy_at_ref(AI チャット用 @相対パス)・copy_code_block(y c = Tab でフォーカス中の Markdown コードブロックをコピー。フォーカス中のときだけメニューに出ます)
  • ファイル管理(Space リーダー): file_createfile_renamefile_deletefile_copyfile_cutfile_pastefile_duplicate(Space→D=カーソル/選択をその場に複製。例 note copy.md)
  • プレビュー: preview_backsearch_startsearch_nextsearch_prevpreview_enter_visual(v)・preview_enter_visual_line(V)・preview_copy_selectionpreview_copy_selection_ref(Y = @path#L12-34)・toggle_markdown_raw(R)・link_focus_next/prevlink_open(Enter=同タブ)・open_link_new_tab(Ctrl-t=別タブ)・image_zoom_in/out/resetpdf_next_pagepdf_prev_pagepreview_next_file / preview_prev_file(Ctrl-n / Ctrl-p=ツリー表示順で次/前のファイルへ。ディレクトリはスキップ・端で wrap)
  • テーブル(preview_table): table_copy_cell/row/column(y リーダー)・toggle_table_cell(Enter= カーソル位置のセルの全文ポップアップ。グリッドは幅の広いセルを で切り詰めるので、こちらは切り詰めない全文を折返しで表示し j/k/g/G/PageUp/PageDown でスクロールできます。q/Esc/Enter で閉じる。ポップアップ自身のキーは [keys.table_cell])
  • Agent Watch: toggle_follow(F)・toggle_changed_filter(C)・jump_next_change(n)・jump_prev_change(N)・toggle_follow_diff_scope(f、フォロー diff 内で「開始以降」⇄ フル git diff を切替)
  • Git: open_git_view(o)・open_git_diff_cursor(d)・git_stagegit_unstagegit_stage_allgit_unstage_allgit_discardgit_commitgit_open_loggit_open_graphgit_open_branchesgit_launch_tool(!・変更ハブ内)・cycle_diff_layoutgit_copy_*branch_*
  • jj(git_changes): jj_sync(R= jj に作業コピーを取り込ませる。konoma が jj リポジトリに書き込む唯一の操作で、確認ダイアログが先に出る。git リポジトリでは何もしない)
  • Git グラフ(git_graph): git_graph_toggle_all(a= バックエンドの既定範囲でなく全リビジョンを表示。狭い既定を持つのは jj だけ)・git_graph_set_basegit_graph_clear_basegit_graph_open_picker(b= ブランチ選択パネルを開く)。パネル内([keys.git_graph_picker])は git_graph_picker_togglegit_graph_picker_allgit_graph_picker_current_onlygit_graph_picker_move_upgit_graph_picker_move_down
  • Git ワークツリー(git_worktreesgit worktree add で作るリンクワークツリーのこと。このページの他の箇所で言う「ワークツリー」= 未コミットの作業ツリーとは別概念): git_open_worktrees(w・変更ハブ内)・worktree_filter_start(/= ブランチ名/パスで絞り込み)・worktree_goto(Enter・固定キー: このタブの root(と open_dir)を選択ワークツリーへ切替。config で別キーにも割当可)・worktree_goto_new_tab(Ctrl-t= 選択を別タブで開く。現在のタブは不変)・worktree_create(n= ブランチ名の入力ダイアログを開く。新規/既存は自動判別で追加の質問はしません → 上の [git] worktree_dir の位置にメインワークツリーの隣として git worktree add し、このタブをそこへ切替)・worktree_show_changes(d= 選択ワークツリーの base ブランチからの diff。コミット済みと未コミットをまとめて表示します — ワークツリーで作業するエージェントは途中でコミットしてしまうことが多く、未コミットのみの diff だと空になるためです。base が解決できない/何も積み上がっていない場合は未コミットのみの diff にフォールバックします → 上の graph_base_branches 参照)・worktree_close(q/Esc)。bare のメインワークツリー・locked/prunable なもの・現在アクティブなものは切替を拒否します(理由は flash で表示)。worktree_show_changes は現在アクティブなものでも動きます。
  • パス貼り付けジャンプ(global): paste_jump(P) — クリップボードのパス/GitHub リンクを読んでその場所へジャンプ(reveal+プレビュー)。ローカルの絶対/相対パス・GitHub blob/raw URL・#L123 / :123 の行アンカーに対応。対象が root 外ならそのリポジトリへ root を切替えます。
  • タブ / アプリ(global): tab_new(t)・toggle_tab_list(T=タブ一覧。一覧内 tab_list_close=d)・tab_prev/tab_next([/])・quit(Q)・toggle_help(?)。tab_close は既定キー無し(閉じるはツリーの q"w" = "tab_close" で復活可)
  • noop(別名 disabled)は既定の割当を消します。

重要な既定を壊す衝突設定(リーダー prefix を単発で潰す・タブキーの流用など)は 起動時に検知され、フッターで通知して既定に戻します — 壊れた設定で UI が 使えなくなることはありません。

パスコピーには [keys] 直下の後方互換エイリアス(copy_prefixcopy_namecopy_relativecopy_fullcopy_parent)もあります。

パス 内容
~/.config/konoma/config.toml この設定。
~/.config/konoma/bookmarks.toml グローバル(大文字)ブックマーク — 絶対パス。
~/.config/konoma/bookmarks/<dir>.toml ローカル(小文字)ブックマーク。起動ディレクトリごとに1ファイル。
~/.config/konoma/sessions/<dir>.toml タブセッション(restore_tabs)。起動ディレクトリごとに1ファイル。
~/.cache/konoma/remote-images/ Markdown 内リモート画像のキャッシュ。
  • 画像 / SVG / Mermaid / LaTeX 数式 / 動画サムネイル / PDF は、グラフィック プロトコルを話す端末なら実ピクセルで描かれます — kitty graphics (Ghostty・kitty・WezTerm・Konsole)・iTerm2sixel。konoma は kitty 向けに 自前の圧縮転送を持つので、kitty 系がいちばん速く出ます。それ以外の端末では ハーフブロックの近似表示に落ちます(粗いですが映ります)。テキスト系の プレビュー(Markdown・コード・git diff・CSV・表)はどの端末でも完全に動きます。
  • アイコン(ui.icons = true・既定)には Nerd Font グリフが必要: 端末のフォールバックに Symbols Nerd Font Mono を足すか、NF 内蔵フォント (HackGen Console NF・UDEV Gothic NF …)を使用。無ければ ui.icons = false
  • 任意ツール: ffmpegthumbnailer/ffmpeg(konoma 自身がデコードできない 動画=VP9・AV1・旧世代コーデック・.avi のサムネイル)・git + lazygit(git スイート/外部ツール)。PDF・画像・SVG・Markdown・Mermaid・ LaTeX 数式・CSV・.mp4/.m4v/.mov.mkv/.webm の H.264/HEVC 動画 サムネイルは追加インストールが一切不要で、純 Rust で描画されます。 すべて不在時は安全に降格します。