Skip to content

設定 ​

ドキュメント作成中

一部の内容はまだ不完全な場合があります。

ThinkTerm は WezTerm と同じく Lua ファイルで設定します。設定項目名、モジュール名、構文はいずれも変更されていません — ThinkTerm の設定ファイルも次の行から始まります。

lua
local wezterm = require 'wezterm'

異なるのは、ファイルをどこから読むか、そしてデータをどこへ書くかだけです。

設定は 1 か所ではなく 2 か所 ​

Lua ファイルは、あなたが手で編集する側で、ターミナル自身の設定項目を持ちます。

その隣にある ~/.config/thinkterm/settings.json は設定ウィンドウが書き出すもので、そこに操作のある選択 — テーマ、ウィンドウの不透明度、ショートカット、スクロールとオーバーレイのスクロールバー、インターフェースのフォントサイズとサイドバーの幅、表示言語、レンダラ、タブアイコン — を保持します。手で編集するためのものではありません。両者が重なる部分では、ほぼ常に設定ウィンドウでの選択が効きます。例外は後述します。

このファイルは使っているあいだにも書き換えられます — サイドバーをドラッグしたり隠したり、ウィンドウを動かしたり — が、それで Lua 設定が再読み込みされることはありません。フォントが読み込み直されたり、コマンドパレットが閉じたりすることもありません。エディタや別のプログラムなど外部から編集された場合は、すぐに読み取って設定ウィンドウと同じように反映します。使われないまま放置され、次の保存で古い内容に上書きされることはありません。

設定ウィンドウ ​

設定 は、サイドバー下部の歯車から開けるほか、macOS では ⌘,、それ以外では Ctrl+Shift+, でも開けます。各ページと、その説明がある場所は次のとおりです。

ページ中身説明
一般言語、レンダラー、メインウィンドウの位置とサイズを復元、読み込まれた設定ファイル、セッションサーバー、開き直したときにペインの内容を戻す、再起動と終了このページ、ウィンドウ、リモート
外観テーマ、有効なカラースキーム、アプリアイコン、タイポグラフィ、ウィンドウの不透明度、macOS 26 ではガラス効果、サイドバー・タブバー・ターミナルの色合い、サイドバーのアイコンと状態マークウィンドウ、ウィンドウの不透明度、アイコンと状態
タブアイコンペインのタブに付くプログラムのアイコンウィンドウ
サイドバーとプラグイン右側のパネル、ステータス、インストール済みのプラグインウィンドウ、プラグイン、エージェント状態
ターミナル既定のシェル、フォント、スクロール方式、スクロールバー、文字の最低コントラスト、カーソルの形と点滅、マウスとクリップボード、分割アニメーション、リモート分割のサイズ変更、下部の引用文このページ、ウィンドウ、コピーとペースト、リモート、プライバシーとセキュリティ
ワークスペースリモートファイル接続のアイドルタイムアウト、ダウンロードフォルダー、リモートへのドロップ先、通知音、システム通知、macOS では Dock アイコンの数字ファイルとノート、エージェント状態、このページ
エージェントどのコーディングエージェントを、どう認識するかエージェント状態
Webブラウザからのアクセスと、渡したリンクウェブアクセス
共有と同期ターミナルを共有。このマシンの他のアカウントにターミナルを見せるスイッチで、実験的機能と表示されます—
権限macOS のみ:ターミナル内のプログラムが持つ権限このページ
アーカイブアーカイブした ProjectSpace、Project、Thread
キーマップ各キーの動作を表示し、コマンドにショートカットを割り当てるキーボードキーボードとコマンド
コマンドパレットパレットのショートカット、行数、フォントサイズ、検索キーボードとコマンド
インポートWezTerm 設定、エディタ・コーディングエージェント・cmux で作業したフォルダ、Herdr セッションの一度きりのインポートこのページ
アクセシビリティボタンの形状を表示。サイドバーの追加ボタンの丸い背景を常に表示します—
バックアップThinkTerm の状態の書き出しと読み込みこのページ
ソフトウェアアップデートアップデートの確認、その頻度、インストールこのページ、アップデート
情報バージョン、ビルド、リンク、ファイルの場所このページ

開発者 には、さらにページを表示するスイッチがあります。ThinkTerm そのものの開発に使うもので、日常の設定ではありません。一覧の上の検索欄では、ページの中の設定項目からページを探せます。

情報ページと不具合報告 ​

設定 › 情報 には、バージョン、ビルド、プラットフォーム、ライセンスが表示され、ソースコード、リリースノート、設定ファイル、データフォルダ、第三者の表記、プライバシーポリシーを開けます。情報をコピー は、不具合報告に必要な情報をクリップボードに入れます。バージョンとビルド、ターゲットのプラットフォームと OS、設定ファイルとデータフォルダのパス、そしてアップデート確認を済ませていれば、確認した最新のリリースです。パスにはホームフォルダの名前が含まれるので、公開の場に貼る前に確かめてください。

設定ウィンドウと設定ファイルが重なるところ ​

いくつかの選択は両方でできます。これらは設定ウィンドウのほうが優先され、それぞれ選択を設定ファイルに戻す方法があります。

設定ウィンドウ側優先される相手設定ファイルに戻すには
設定 › ターミナル › 既定のシェルdefault_prog。このマシンで新しく開く端末についてthinkterm.lua に従う (default_prog) を選ぶ。設定ファイルが何も指定していなければ システム既定 と表示されます
設定 › ターミナル › フォントサイズ、8 から 48font_size。開いている端末にすぐ適用その行をリセット
設定 › 外観 › 有効なカラースキーム またはコマンドパレットの テーマを変更 で選んだスキームcolor_schemeテーマを変更 の 設定のデフォルトを使用
設定 › ターミナル › 文字の最低コントラストtext_min_contrast_ratioオフ
設定 › コマンドパレット › フォントサイズcommand_palette_font_sizeその行をリセット
設定 › キーマップ で設定したショートカットkeys の同じキーと、そのキーの組み込みの既定そのショートカットの リセット、または すべてのショートカットをリセット
設定 › 外観 › ウィンドウの不透明度window_background_opacity、macOS では macos_window_background_blur もデフォルトに戻す
設定 › ターミナル › カーソルの形 を バー または 下線 にした場合default_cursor_style の形ブロック を選ぶ
設定 › ターミナル › カーソルの点滅 を スムーズ または ハード にした場合カーソルが点滅するかどうか(本来は default_cursor_style が決めます)。ハード では cursor_blink_ease_in と cursor_blink_ease_out もオフ を選ぶ
設定 › ソフトウェアアップデート › アップデートを自動確認 と 確認の頻度その行を一度操作したあとは check_for_updates と check_for_updates_interval_secondsなし。アップデートの確認 を参照

既定のシェル には、このマシンで見つかったシェルが並び、次に端末を開いたときから効きます。従うのはこのマシンの端末だけで、このマシンのセッションサーバーに置かれた端末も含みます。リモートのサーバーは、そのサーバー自身の設定に従います。選んだあとでアンインストールされたシェルは、端末が開けなくなるのではなく、システム既定に戻ります。

Windows では一覧に Git Bash(ログインシェルとして起動)も加わります。Git for Windows が Program Files の下、%LOCALAPPDATA%\Programs\Git の下、または Scoop のインストールで見つかった場合です。wsl.exe があれば、WSL ディストリビューションを最大 3 つまで、既定のものを先頭に、それぞれ <name> (WSL) として並べます。Docker Desktop 自身の docker-desktop ディストリビューションは含まれません。

フォントそのものはこの中に入りません。設定 › ターミナル › フォントファミリー は設定ファイルが指定するフォントを表示するだけで、変えるのは設定ファイルの font です。

逆向きのものが 1 つあります。設定ファイルの enable_scroll_bar = true は、設定 › ターミナル › スクロールバー がどうであれ、ThinkTerm のオーバーレイのスクロールバーを WezTerm 自身のものに置き換えます。

設定 › キーマップ で設定したショートカットは settings.json に保存され、keys の同じキーと組み込みの既定より優先されます。設定ファイル自体が書き換えられることはありません。設定ファイルの Lua 関数を実行するショートカットは、ファイルでしか変更できません。キーボードとコマンド を参照してください。

ウィンドウの不透明度 は 30% から 100% まで 5% 刻みのスライダーで、ベータの表示が付いており、動かすまでは デフォルト と表示されます。動かすと、すべてのウィンドウに window_background_opacity が設定されます。macOS ではウィンドウが透けている間、半径 20 の背景ぼかしも加わりますが、設定ファイルが macos_window_background_blur を自分で指定している場合は加わりません。Linux ではグレーアウトされますが、設定ファイルの window_background_opacity は引き続き効きます。設定には Windows ではまだ安定していないと書かれており、そこでは win32_system_backdrop は設定ファイルに任され、すりガラスは不透明度に伴って ThinkTerm の再起動後に現れます。ウィンドウ を参照してください。

スキームを選んでいないとき、ライトなインターフェースは独自のライトな端末スキームも連れてきます。ウィンドウ を参照してください。

設定で選んだカラースキームとウィンドウの不透明度は、設定ファイルがあってもなくても反映されます。

設定ファイルの探索順 ​

ThinkTerm は次の順で探し、最初に見つかったファイルを読み込みます。

  1. コマンドラインの --config-file PATH
  2. $THINKTERM_CONFIG_FILE
  3. $WEZTERM_CONFIG_FILE
  4. 実行ファイルと同じディレクトリの thinkterm.lua — Windows のみ
  5. 実行ファイルと同じディレクトリの wezterm.lua — Windows のみ
  6. ~/.config/thinkterm/thinkterm.lua
  7. ~/.config/thinkterm/wezterm.lua
  8. ~/.thinkterm.lua

先頭の項目と並んで働くフラグがもう 2 つあります。--skip-config(-n)は探索そのものを飛ばして組み込みの既定値で動かし、--config name=value は繰り返し指定でき、読み込まれた設定の上から個々の項目を上書きします。3 つともグローバルフラグなので、サブコマンドより前に置きます。

$THINKTERM_CONFIG_DIR と $WEZTERM_CONFIG_DIR はこの探索には関与しません。これらは設定の読み込みが完了したあとに ThinkTerm が書き出すもので、読み込まれたファイルのあるディレクトリを指し、あなたが起動するプログラムから参照できるようにするためのものです。自分で設定しても、どの設定が選ばれるかは変わりません。

Windows 限定の 2 項目は意図的なものです。実行ファイルの隣に置かれた設定が最優先されることで、ThinkTerm を USB メモリに入れて持ち歩き、自分の設定がない、あるいは他人の設定が入っているマシンでも動かせます。

wezterm.lua というファイル名も残骸ではありません。既存の WezTerm 設定を、名前を変えずに ThinkTerm のディレクトリへ置けるようにするためのものです。

ThinkTerm が WezTerm のインストールから受け取るもの ​

あなたの WezTerm 設定ファイルは読み込まれません。上記の場所はいずれも ~/.config/wezterm/wezterm.lua を指しておらず、ThinkTerm がそこへ書き込むこともありません。

ただし分離は完全ではなく、知っておくべき経路が 2 つあります。

WEZTERM_CONFIG_FILE は尊重されます。 これは上の探索順に含まれるため、この変数が環境に設定されていれば(WezTerm をそのように構成していたなら十分あり得ます)、ThinkTerm はそれが指すファイルを読み込みます。WezTerm は自分が開くすべての端末でこの変数を設定するので、WezTerm の中のシェルから起動した ThinkTerm は WezTerm の設定を読み込みます。THINKTERM_CONFIG_FILE を設定するか、WezTerm 側の変数を解除すれば、二つのインストールを分離できます。

WezTerm の設定ディレクトリは Lua モジュールとカラースキームの探索対象として残ります。 ~/.config/wezterm/ と ~/.wezterm/ は Lua の package.path に含まれ、~/.config/wezterm/colors/ はカラースキームの探索先になります。そのため ThinkTerm の設定で require 'mymodule' と書けば、WezTerm 用に書いたモジュールが見つかります。分離されているのは設定ファイル自体であって、ディレクトリ全体ではありません。

インポート ​

設定 › インポート は、このコンピュータ上の別のプログラムがすでに持っているものを取り込みます。WezTerm 設定の項目、エディタ・コーディングエージェント・cmux で作業したフォルダ、そして Herdr のセッションです。どのインポートも一度きりで、その後は元と結びつきません。

このページは インポート元、内容の確認、完了 の 3 ステップです。最初のステップでインポート元がカードとして並び、続ける で選んだものを読み込みます。戻る でカードに戻り、最後のステップの 続けてインポート はカードからやり直します。WezTerm は常に並びます。プロジェクトフォルダ は、対応するエディタ、コーディングエージェント、cmux のいずれかがこのコンピュータで見つかったときだけ現れ、Herdr はベータの表示が付いていて、macOS、Linux、Windows で使えます。

ThinkTerm を初めて開くとき、ウェルカムページは見つかったものを同じように並べ、それぞれのボタンで、そのインポート元の 内容の確認 のステップでこのページが開きます — インストール を参照してください。

WezTerm からインポート ​

WezTerm のカードは、既存の WezTerm 設定から選んだ設定を ThinkTerm の設定へコピーします。その後は二つのファイルは独立し、WezTerm 側を後で変えても、ThinkTerm に届くのはもう一度インポートしたときだけです。

WezTerm の設定は次の場所を順に探し、最初に存在するものを使います。

  1. ~/.wezterm.lua
  2. $XDG_CONFIG_HOME/wezterm/wezterm.lua。XDG_CONFIG_HOME が未設定なら ~/.config/wezterm/wezterm.lua
  3. $XDG_CONFIG_DIRS の各ディレクトリの下の wezterm/wezterm.lua — macOS と Linux のみ

ここでは WEZTERM_CONFIG_FILE は使われません。上で述べた ThinkTerm 自身の設定の探索では使われます。

続ける はそのファイルを読み込み — Lua なので、WezTerm で動くのと同じように実行されます — 内容の確認 のステップで WezTerm 設定と ThinkTerm 自身の設定がどこで見つかったかを示したあと、インポートできる設定を一覧にします。出てくるのはファイル自身が設定している項目だけで、WezTerm の既定値のままの項目は出ません。そのため、インポートが WezTerm の既定値で ThinkTerm の既定値を上書きすることはありません。最初は見つかった項目がすべて選択されていて、件数の横に すべて選択 と クリア があります。インポートできるのは次の 15 項目です。

color_scheme、window_background_opacity、macos_window_background_blur、inactive_pane_hsb、font、font_size、line_height、cell_width、default_prog、default_cwd、front_end、window_decorations、disable_default_key_bindings、keys、key_tables

このリストが定めるのはインポート機能が代わりにコピーする範囲であって、ThinkTerm が対応している範囲ではありません。それ以外の WezTerm 設定項目も、ThinkTerm の設定ファイルに手で書けば同様に機能します。

読み直す はファイルをもう一度読みます。WezTerm 設定が見つからないときは、これと 選択項目をインポート がグレーアウトし、何も選んでいないときも 選択項目をインポート はグレーアウトします。選択項目をインポート は、選んだ値を普通の Lua テーブルとして ~/.config/thinkterm/imported_from_wezterm.lua に書きます。このファイルはインポート機能のものです。インポートのたびに丸ごと置き換えられるので、中で変えたことは次回で失われます。変更は自分の設定のほうで行ってください。

その後どうなるかは、~/.config/thinkterm/ にすでに ThinkTerm の設定があるかどうかで決まります。

  • ない場合、インポートは ~/.config/thinkterm/thinkterm.lua も作ります。これはインポートしたファイルを読み込み、その結果を返します。ほかに必要なことはありません。
  • ある場合 — thinkterm.lua か wezterm.lua — そのファイルには手を付けず、インポートした値は、そのファイルが読み込むまで何も効きません。設定を返す行の前に次を加えてください。config は、そのファイルが返すテーブルです。
lua
local imported = require 'imported_from_wezterm'
for key, value in pairs(imported) do
  config[key] = value
end

このループより後の代入は、インポートした値を上書きします。

それ以外の場所にある設定は認識されません。設定が ~/.thinkterm.lua の場合、インポートが作る thinkterm.lua は探索順でそれより前に来るため、そちらが代わりに読み込まれます。

エディタ、コーディングエージェント、cmux のプロジェクトフォルダ ​

プロジェクトフォルダ(補足は エディタとコーディングエージェントから)のカードは、あなたが作業したフォルダを取り込めるようにします。元になるのは次の 3 種類です。

  • エディタ。 VS Code とその派生エディタで開いたフォルダです。対象は VS Code、VS Code Insiders、Code - OSS、VSCodium とその Insiders 版、Cursor、Windsurf、Antigravity、Kiro、Positron、Trae、Void です。どれも自分のユーザーデータフォルダの中だけを探します。マルチルートのワークスペース(エディタがフォルダではなく .code-workspace ファイルとして記録するもの)は除かれます。
  • コーディングエージェント。 Claude Code、Codex、Pi を起動したフォルダです。それぞれが残すセッションの記録から読みます。Claude Code は ~/.claude.json のプロジェクト一覧、Codex は ~/.codex/sessions、Pi は ~/.pi/agent/sessions です。
  • cmux(macOS)。cmux が ~/Library/Application Support/cmux に保存するセッションから、各 workspace のフォルダとそのターミナルのフォルダを取り込みます。日付は、cmux がそのセッションを最後に保存した時刻です。

取り込むのはフォルダのパスと最後に使った日付だけです。フォルダの中身も、エージェントのセッションで交わされた内容も読み取りません。

内容の確認 のステップでは、フォルダを最近使った順に並べ、エディタ、エージェント、cmux ごとに一覧を絞るボタンがあります。直近 30 日以内に使ったフォルダは、最初からチェックされています。選んだ Space にすでに Project として入っているものは サイドバーにあります と表示され、最初はチェックされません。追加先 で入れるローカルの Space を選びます — 設定を開いた Space がローカルならそれが初期値です — チェックしたフォルダはそれぞれ、Thread を 1 つ持つ Project になります。一覧の下の 1 行は、SSH、WSL、コンテナで開かれていて、まだ追加できないフォルダの数を示します。

Herdr からインポート ​

Herdr のカードは、Herdr のセッションを 1 つ、Herdr — <セッション> という名前の新しい Space としてインポートします。Herdr の workspace はそれぞれ、その workspace のタブとペインを収めた Thread を 1 つ持つ Project になります。ベータの表示が付いています。ThinkTerm は Herdr の設定フォルダ、~/.config/herdr または $XDG_CONFIG_HOME/herdr(Windows では、XDG_CONFIG_HOME が設定されていなければ %APPDATA%\herdr)の中にあるセッションを探します。既定のセッションと、sessions/ の下のそれぞれです。

続ける でセッションを読み込みます。1 つだけならそのプレビューがすぐ開き、複数あれば各セッションに プレビュー ボタンが付き、すでにインポートしたセッションには インポート済み の表示が付きます。インポート内容の確認 と題したプレビューには、新しい Space の名前、Project・第1階層タブ・ターミナルの数、各 Project のターミナルが出ます。プレビューを更新 はセッションを読み直します。プレビューのあとにセッションの構造、実行状態、保存済みレイアウトが変わると、インポートは止まり、先にプレビューを更新するよう求められます。以前にインポートしたセッションをもう一度インポートしようとすると、別の Space が作られるため警告が出ます。

Herdr 自身のファイルは変更されないので、Herdr をもう一度起動すると、以前のレイアウトが復元され、保存してあったものが再開されることがあります。

どちらのモードになるかは、セッションが実行中かどうかで決まります。

実行中のセッション保存済みレイアウト
ボタン実行中のセッションを移すレイアウトをインポート
動作セッションのターミナルを ThinkTerm に移し、既存のプロセスは動き続ける保存されたディレクトリで新しいシェルを開く
引き継がれないものスクロールバック全体と画像。全画面プログラムは再描画が必要な場合がある保存された起動コマンドとエージェント再開コマンドは実行されない
必要なものHerdr の live_handoff 対応と、互換性のあるプロトコルバージョン保存されたディレクトリが存在し、レイアウト形式にこの ThinkTerm が対応していること

Windows の Herdr は実行中のターミナルを引き継げないため、使えるのは レイアウトをインポート だけです。Herdr が変更のたびに数秒後に保存するレイアウトを、Herdr が動いているかどうかにかかわらず読み取り、タブ、分割、フォルダを取り込んで、各ペインを新しいシェルで開きます。シェルは 設定 › ターミナル › 既定のシェル で選んだもの、なければ default_prog がシェルを指しているときそれ、それもなければコマンドプロセッサです。Herdr は開いたままで構わず、その中で動いているものには手を付けません。

要件を満たさないときは、理由が表示されてインポートは拒否されます。どちらのモードも、セッションが自分のアカウントのもので、そのディレクトリにアクセスできる必要があります。実行中のセッションでは、さらに Herdr と ThinkTerm が一時ディレクトリ、ソケット、ThinkTerm の実行ファイルを共有している必要があり、Linux では /tmp が noexec でマウントされていてはいけません。

リモートサーバー上の Space があるときは、インポート元のマシン に このコンピュータ とそれらのホストが並びます。接続していないホストは、選ぶと接続します。リモートホストからのインポートは、そのサーバーの Herdr を読み、プロセスはそのサーバーに残ります。セッションはリモート接続のアカウントのものである必要があります。

インポート中に接続が切れたときは、ページに インポート結果を確認 が出て、再接続してそのリクエストの結果を取り戻します。二度目のインポートを始めず、これを使ってください。インポートが終わると、Space を開く で新しい Space が開きます。

データの保存場所 ​

macOS

  • 設定ファイル — ~/.config/thinkterm/
  • ワークスペースデータ — ~/Library/Application Support/ThinkTerm/
  • ターミナル状態 — ~/Library/Application Support/thinkterm/
  • キャッシュ — ~/Library/Caches/thinkterm/
  • ランタイム — ~/.local/share/thinkterm/

Linux

  • 設定ファイル — ~/.config/thinkterm/
  • ワークスペースデータ — ~/.local/share/ThinkTerm/
  • ターミナル状態 — ~/.local/share/thinkterm/
  • キャッシュ — ~/.cache/thinkterm/
  • ランタイム — $XDG_RUNTIME_DIR/thinkterm/

Windows

  • 設定ファイル — %USERPROFILE%\.config\thinkterm\
  • ワークスペースデータ — %APPDATA%\ThinkTerm\
  • 資格情報 — %LOCALAPPDATA%\ThinkTerm\ssh\
  • ターミナル状態 — %APPDATA%\thinkterm\
  • キャッシュ — %LOCALAPPDATA%\thinkterm\
  • ランタイム — ~/.local/share/thinkterm/

ここには、つまずきやすい点が 4 つあります。

設定ファイルのパスはプラットフォームの慣習に従いません。 すべての OS で ~/.config/thinkterm/ が使われ、Windows も例外ではありません — %APPDATA% ではないのです。そのため設定とデータはどのプラットフォームでも別の場所に置かれます。Linux も同じで、設定は ~/.config の下、データは ~/.local/share の下です。

大文字小文字だけが異なる 2 つのデータディレクトリがあります。 ワークスペースデータ — Space・Project・Thread の構造、スニペット、そして Unix では SSH ホスト帳とその暗号鍵 — は ThinkTerm/ に書かれます。ターミナルとマルチプレクサの状態は thinkterm/ に書かれます。macOS と Windows のファイルシステムは既定では大文字小文字を区別しないため、この 2 つは通常一つのディレクトリに統合されます — 大文字小文字を区別する APFS ボリュームでは統合されません。Linux では常に別々のディレクトリです。どこに置かれても、どちらも ThinkTerm のものです。

Windows では、資格情報は意図的に移動プロファイルの外に置かれます。 SSH ホスト帳とその暗号鍵は、他のワークスペースデータと一緒に %APPDATA% に置かれるのではなく %LOCALAPPDATA% の下にあります。ドメインからサインアウトしたときに、それらがプロファイルサーバーへ複製されないようにするためです。古いインストールにある 2 つのファイルは、ThinkTerm が最初に必要としたときに対で移されます。ウェブリスナーの証明書と秘密鍵も同じ理由でそこに置かれます。

ランタイムディレクトリも慣習には従いません。 マルチプレクサのソケット、pid ファイル、TLS の資材は Linux では $XDG_RUNTIME_DIR/thinkterm/ にあり、macOS と Windows では ~/.local/share/thinkterm/ に落ちます — この 2 つのプラットフォームでは、ほかに何も置かれていない場所です。thinkterm cli がサーバーを見つけられないときに思い出す価値があります。

ノートの保管庫はこのいずれにも保存されません。あなたが選んだ、通常の Markdown ファイルが入ったディレクトリであり、ThinkTerm はその紐づけだけを記録します。

WezTerm から引き継ぐデータ ​

WezTerm のデータディレクトリ — macOS では ~/Library/Application Support/wezterm/、Linux では ~/.local/share/wezterm/、Windows では %APPDATA%\wezterm\ — があると、ThinkTerm は起動時にそこから 4 つのものを自分のターミナル状態のディレクトリへコピーします。

項目内容
pluginswezterm.plugin.require が取得した Lua プラグイン
recent-commands.jsonコマンドパレットの最近のコマンド
recent-emoji.json文字選択の最近の選択
repl-historyデバッグオーバーレイの Lua 履歴

どれも ThinkTerm 側にまだない場合にだけコピーされるので、実際には一度きりで、何かを上書きすることはありません。WezTerm 側のファイルはそのまま残り、そのディレクトリのほかのものは読まれません。

バックアップと復元 ​

設定 › バックアップ は、ThinkTerm 自身の状態を選んだフォルダへ書き出し、またそこから戻します。書き出さない限り、何もバックアップされません。

書き出すと、ThinkTerm Backup に日付と時刻を付けた名前のフォルダが作られます。中身は普通の JSON ファイルで、横にある thinkterm-backup.json がその一覧です。

ファイル内容
workspace_threads.jsonSpace・Project・Thread
ssh_hosts.jsonThinkTerm 自身の SSH ホスト帳
snippets.jsonスニペット
recent-commands.json最近のコマンド

Space は ThinkTerm がメモリに持っている状態から書き出されるため、直前の保存がまだディスクに届いていなくても、画面に見えているとおりのものが書き出されます。macOS と Linux では、各ファイルはモード 0600 で書かれます。

secret.key は意図して含めていません。保存パスワードはこのマシンの鍵で暗号化されたままホスト帳と一緒に書き出されるので、別のマシンでは入力し直す必要があります。Lua 設定、settings.json、ノートの保管庫も含まれません。いずれも普通のファイルなので、ほかのファイルと同じようにコピーしてください。

読み込みは、動いているウィンドウの下でこれらのファイルを差し替えることができません。ウィンドウはそれをメモリに持っていて、あとで書き戻すからです。そのため読み込みはまずバックアップのすべてのファイルを検査し、それから待ちます。適用するのは、ほかに ThinkTerm のウィンドウが動いていないと確認できた次回の起動で、何かが状態を読む前に行われます。ページにある ThinkTerm を終了 はそのためのものです。置き換えられる各ファイルは、元のファイルの横に <name>.before-import-<time>.json として残されます。どれか一つでも所定の場所に置けなければ、すでに置き換えたファイルは元に戻されるので、失敗した読み込みは何も変えません。失敗はバックアップのページに表示され、自動で再試行はされません。

一つだけ、置き換えではなく統合されるものがあります。ローカルのセッションサーバーがまだ持っている Space は、次に ThinkTerm がそのサーバーへ接続したときに戻され、両方にある場合はサーバー側の名前が優先されます。読み込みはバックアップにあるものを戻すだけで、サーバーが残しているものを消しはしません。

インターフェースの言語 ​

設定 › 一般 › 言語 は ThinkTerm 自身のインターフェース言語を再起動なしで即座に切り替えます。システム設定に従う はシステム設定から取得し、実際に解決された言語を表示します。

インターフェースは英語・簡体字中国語・日本語・フランス語・ドイツ語・ロシア語で提供されます。対象は ThinkTerm 自身の画面だけで、ターミナルの内容や WezTerm が描画する部分は影響を受けません。

コマンド名も言語に従います。コマンドパレット、macOS のメニューバー、キーマップのページのいずれもです。メニューバーは言語を切り替えた瞬間に作り直されます。パレットは実行したコマンドを英語名で記憶するので、言語を変えても履歴は残ります。

macOS で中国語を表示するには PingFang が必要ですが、これは macOS が必要に応じてダウンロードするフォントです。この Mac が日本語や韓国語より先に簡体字中国語を読む設定で、PingFang が入っていないとき、ThinkTerm は漢字、CJK の句読点、かなを、macOS に付属する Hiragino Sans GB で描きます。簡体字にしかない字が空白の箱で表示されるのを避けるためです。このとき 設定 › 一般 › 言語 の行の下に注意書きが出て、PingFang SC を Font Book でダウンロードし、ThinkTerm を再起動するよう案内します。PingFang が入っている場合や、この Mac が簡体字中国語を最優先で読まない場合、Hiragino Sans GB が描くのは、ほかのどのフォントにもない漢字だけです。

レンダラー ​

設定 › 一般 › レンダラー は、ターミナルウィンドウと設定ウィンドウで使うものを OpenGL と WebGpu から選びます。言語と違い、反映されるのは次に ThinkTerm を起動したときです。選んでいなければ設定ファイルの front_end に従います。このオプションは設定しなければ Windows では OpenGL、それ以外では WebGpu なので既定はそうなり、そこが OpenGL か Software なら OpenGL になります。

片方が失敗しても致命的にはなりません。使っているレンダラーが起動できないとき — 使える WebGpu アダプタがない、または OpenGL が古くて ThinkTerm のシェーダーを動かせない — は、ウィンドウはもう一方で開き、設定ウィンドウも同じです。片方しか動かないマシンでも、それを切り替えるための設定そのものが開けなくなることはありません。両方とも失敗したときだけ、ウィンドウは開きません。front_end = 'Software' は決してフォールバックしません。

カーソル ​

設定 › ターミナル › 表示 には、カーソルの行が 2 つあります。

カーソルの形 は ブロック、バー、下線 から選びます。既定の ブロック は、形を設定ファイルの default_cursor_style に任せます。そこで何も指定しなければブロックです。バー と 下線 は、設定ファイルが指定する形を置き換え、点滅の有無はそのまま引き継ぎます。

カーソルの点滅 は オフ、スムーズ、ハード から選びます。既定の オフ は、カーソルを設定ファイルの指定どおりにします。default_cursor_style が点滅を求めない限り、点滅しません。スムーズ と ハード はカーソルを点滅させます。スムーズ は cursor_blink_ease_in と cursor_blink_ease_out の曲線に沿って徐々に表示・非表示にし、ハード はそれらの設定にかかわらず、完全に点灯した状態と完全に消えた状態を切り替えます。それぞれの段階は cursor_blink_rate の長さで、設定しなければ 600 ms です。

エディタがモードを切り替えるときのように、プログラムが自分でカーソルスタイルを指定している場合は、そちらが優先されます。どちらの選択も、設定を再読み込みすることなく、開いているすべてのウィンドウにすぐ反映されます。

アップデートの確認 ​

デスクトップアプリは自分で新しいリリースを確認し、設定 › ソフトウェアアップデート にはそのための行が 2 つあります。スイッチの アップデートを自動確認 と、12 時間ごと、毎日、毎週 から選ぶ 確認の頻度 です。スイッチがオフのあいだ、確認の頻度 はグレーアウトされます。行を操作するまでは設定ファイルに従い、スイッチは check_for_updates、頻度は check_for_updates_interval_seconds が効きます。一度操作したあとは行が優先され、ファイルの設定は読まれなくなります。変更は 1 分以内に、再起動なしで反映されます。

確認は、記録に残る直近の確認から頻度の分だけ時間がたつと行われます。その確認が何であっても構わず、アップデートを確認 を自分で押した分も数えます。そのため毎週の確認は、起動をまたいでも毎週のままです。ThinkTerm の起動から数秒後、それだけの時間が過ぎているときにだけ確認します。最終確認 にその時刻が出ます。スイッチがオフなら、アップデートを確認 を押したときだけ確認します。残りの流れは アップデート、リクエストが運ぶものは プライバシーとセキュリティ を参照してください。

ペインの内容の復元 ​

ThinkTerm のターミナルが正常な手順で止まるとき — ターミナルごと ThinkTerm を終了した、コンピュータをシャットダウンした・ログアウトした、セッションサーバーを止めた — 各ペインに表示されていた内容を残し、次にその Thread のレイアウトを復元するときに戻せます。スイッチは 設定 › 一般 › 開き直したときにペインの内容を戻す です。

デスクトップアプリが動いているマシンでは、既定でオンです。アプリは起動時、どちらにも設定されていなければオンにし、オフにした場合はオフであることが書き残されてオフのままになります。対象はこのコンピュータのターミナルだけです。リモートホストなど別のマシンでは、そのマシンのターミナルで thinkterm cli restore-output on を実行するまでオフです。restore-output off で再びオフにして、残っていた内容を削除し、restore-output status でどちらかを確認できます。

残るのは、各ローカルペインのメイン画面とスクロールバックで、文字と色を最大 10,000 行まで保存します。全画面プログラムの画面と画像は残りません。書き込む前に、パスワード、トークン、秘密鍵らしきものは • に置き換えられ、元の文字列がディスクに届くことはありません。記録は、後述のターミナル状態ディレクトリの kept-output に置かれます。レイアウトが戻るとすぐに削除され、Thread が再び開かれなければ 15 日後に削除されます。

復元されたペインでは、古い出力が新しいシェルの上に表示され、続いて閉じた時刻と復元した時刻を示す薄い 1 行 ── closed … · restored … ── が入り、その下からシェルが始まります。戻るのは古い出力であって古いプロセスではありません。動いていたものが再び動き出すことはありません。

クラッシュや停電では保存する時間がないので、レイアウトは戻っても出力は戻りません。

macOS でのフォルダアクセス ​

Project はフォルダに紐づいており、そのフォルダを読めるかどうかは macOS が決めます。拒否された場合、Project のページがその旨を示し、システム設定 › プライバシーとセキュリティ › ファイルとフォルダ › ThinkTerm を案内します。

ThinkTerm 固有の点が 2 つあります。

Project のコンテキストメニューに フォルダへのアクセスを許可… があります。 ブロックされたページと同じピッカーを実行し、そのあと Project の最初の Thread を開くので、許可が想定ではなく実際に通ったことを確認できます。

セッションサーバーは自分の名義で要求します。 ローカル端末をバックグラウンドのセッションサーバーで動かしている場合、そのデーモンは独自の macOS プライバシー識別子を持つため、必要な許可は GUI に与えた許可と同じとは限りません。拒否がサーバー側から来た場合、ページはその点を説明し、システム設定の該当箇所を開く導線を出します。

拒否されたフォルダは、黙ってフォールバックするのではなくエラーになります。以前のビルドは何も言わずホームディレクトリへ戻っていたため、拒否がインターフェースまで届かず、許可のしようがありませんでした。

環境変数 THINKTERM_NO_PRIVACY_DISCLAIM は、デーモンにこの独立した識別子を与える処理をスキップします。

macOS の権限 ​

macOS は、ThinkTerm のターミナルで実行するプログラムをすべて ThinkTerm として扱います。macOS にだけある 設定 › 権限 ページは、それらのプログラムが持てる 4 つの権限、フルディスクアクセス、画面とシステムオーディオの録音、マイク、カメラ を報告します。各行は 許可済み、未許可、拒否、未確認、不明 のいずれかで、システム設定を開く ボタンでシステム設定の該当する項目が開きます。見るだけで macOS が何かを尋ねることはありません。マイクとカメラは、プログラムが初めて使おうとするまで 未確認 です。フルディスクアクセスと画面録音は、拒否されたのか一度も尋ねていないのか区別できないため、未許可 と表示されます。

フルディスクアクセス には専用の注意書きがあります。許可すると、ターミナルで実行するどのプログラムも — スクリプトやコーディングエージェントを含め — デスクトップ、書類、ダウンロード、メール、他のアプリのデータを、macOS に再び確認されることなく読み書きできます。必要なときだけオンにし、使い終わったらシステム設定でオフにしてください。また、手動で追加する必要があります。システム設定で + を押し、対象のプログラムをリストにドラッグします。

そのプログラムが何かは、ローカル端末がどこで動いているかで決まります。既定のようにバックグラウンドのセッションサーバーに置かれている場合、権限はサーバー自身のもので、最後の行の見出しは ThinkTerm バックグラウンドサービス です。そうでなければ ThinkTerm です。片方に許可した権限はもう片方のものではありません。ThinkTerm に許可したフォルダを、もう一度許可する必要があるのはこのためです。その行のボタンは、そのプログラムを Finder で表示します。プロンプトに ThinkTerm の名前が出る理由は、プライバシーとセキュリティ を参照してください。

音、通知、Dock の数字 ​

設定 › ワークスペース の 通知 カードには、Thread について知らせる方法が最大 3 つあります。通知音、システム通知、そして macOS だけの Dock アイコンの数字 です。後者は ThinkTerm の Dock アイコンに、まだ見ていないものがある Thread の数を表示します。3 つとも既定でオンです。

それぞれの下に、どの場面で知らせるかの選択肢 完了、対応待ち、エラー があり、外すまですべてチェックされています。通知音 から 完了 を外すと、Thread が完了したときの音は鳴らなくなり、待ちの音は残ります。ほかの 2 つも同じです。Dock の数字は、完了済みの Thread を 完了 がチェックされている間だけ、対応が必要な Thread を、待っている理由に応じて 対応待ち または エラー がチェックされている間だけ数えます。状態と音は エージェント状態、システム通知が運ぶものは プライバシーとセキュリティ を参照してください。

設定項目リファレンス ​

ほとんどの設定項目は WezTerm のものがそのまま使われているため、リファレンスは上流にあります。

注意点が 3 つあります。

ThinkTerm は 2026 年 3 月 31 日に WezTerm から分岐したため、それ以降に上流へ追加された項目はまだ存在しない可能性があります。

名前と意味はそのままで、既定値だけが変わった項目があります。後述の一覧を参照してください。

また ThinkTerm 独自の項目もあり、これらは上流のドキュメントには載っていません。

設定項目制御する内容
agent_status_detectionセッション状態の検出を行うか
web_serversマルチプレクサが起動時に開くウェブリスナー。ウェブアクセス を参照
ui_colorsThinkTerm 自身のインターフェースの色。colors は引き続きターミナルのパレット。インターフェースの色 を参照
remote_mux_auto_claim_on_open意図してリモートホストに接続したとき、そのターミナルをすぐ引き受けるか
note_spellcheck_enabledMarkdown エディタのスペルチェック
note_remote_images_enabledノートでリモート URL の画像を読み込むか
note_reading_max_widthノートの本文の列が広がる最大の幅。論理ピクセル(macOS ではポイント)単位で、既定は 820。ノートの領域がそれより広ければ列は中央に置かれます
right_sidebar_search_respects_gitignoreファイル検索が無視対象のファイルを飛ばすか。ファイルツリーには引き続き表示されます
unfocused_fps表示されているがフォーカスのないウィンドウが、ターミナルの出力で再描画する頻度。既定は 10、0 で制限なし
kitty_image_memory_budget_mib各ペインが保持できる画像データの量(MiB)。既定は 128、0 で無制限。ウィンドウ を参照
live_overview_preview_refresh_msLive Overview のカードがターミナルを読み直す間隔。既定は 300

text_min_contrast_ratio は上流の項目ですが、その上に 設定 › ターミナル › 文字の最低コントラスト があります。そこで比率を選べばそちらが優先され、オフ なら設定ファイルの値に任されます。

プラグインは Lua ファイルでは設定しません。プラグイン を参照してください。

WezTerm と異なる既定値 ​

次の項目は意味こそ上流と同じですが、設定ファイルが指定しないときの出発点が違います。

設定項目WezTermThinkTerm
front_endOpenGLWebGpu(Windows では OpenGL)
initial_cols80120
initial_rows2432
max_fps60120
default_cwd未設定ホームフォルダ
native_macos_fullscreen_modefalsetrue
color_scheme(macOS)未設定Apple System Colors。colors も未設定の場合
adjust_window_size_when_changing_font_size(macOS)未設定false
cursor_blink_rate800600
command_palette_font_size1413

default_cwd が効くのは、端末にほかの手がかりがないとき — 自分のディレクトリがなく、開いた元の端末もディレクトリを伝えていないとき — です。そのとき端末は、ThinkTerm 自体を起動したディレクトリではなく、ホームフォルダから始まります。adjust_window_size_when_changing_font_size がオフだと、フォントサイズを変えてもウィンドウの大きさは変わらず、そこに収まる行数と列数が変わります。

さらに 2 つは、未設定のときターミナルのパレットから導かれます。非アクティブなペインの減光 inactive_pane_hsb は、明るいカラースキームでは暗いものより浅くなり、常に同じ値ではありません。ペインの分割線の色もターミナルの背景から混ぜて作られます。明示的に設定すれば、上流のドキュメントどおりに振る舞います。

カラースキームは、ファイルではなく設定ウィンドウで決めることもできます。設定ウィンドウと設定ファイルが重なるところ を参照してください。

インターフェースの色 ​

ui_colors は、ThinkTerm が端末の周りに描く色 — サイドバー、タブ列、ペインの上の帯、設定ウィンドウ、メニュー — を上書きします。どの項目も省略でき、指定しなかった項目はテーマが本来使う色のままなので、2 色を書いたテーブルは 2 色だけを変えます。

lua
config.ui_colors = {
  sidebar_bg = '#282828',
  accent = '#d79921',
}

色の書き方は、設定ファイルのほかの場所と同じです。項目は次のとおりです。

グループ項目
面window_bg(いちばん奥の地)、sidebar_bg、workspace_sidebar_bg(一段沈んだサイドバーの地。設定ウィンドウのページ一覧)、header_bg(タブの上の帯)、card_bg(window_bg の上のカード)、group_bg(カードの中でまとめた行)、separator
コントロールcontrol_bg、control_hover_bg、control_pressed_bg、control_border、track_off(スイッチのオフ側)
サイドバーsidebar_button_bg、sidebar_button_hover_bg、sidebar_row_hover_bg、sidebar_row_pressed_bg、sidebar_row_active_bg、sidebar_row_active_border
選択とアクセントselected_bg、selected_text、accent、accent_hover、on_accent(アクセントの上の文字とアイコン)、danger(破壊的な操作とエラー)
文字text、secondary_text、muted_text
その他scrollbar_thumb(オーバーレイのスクロールバー)、spelling_error(スペルミスの下線)

ターミナルの配色に合わせる では面と文字がターミナルの背景の上へ移りますが、accent、accent_hover、on_accent、selected_bg、danger、spelling_error は設計どおりの値のままです。スキーム自身の青は、そのスキームの背景の上では読みにくいことが多いからです。合わせたい場合はここで設定してください。

環境変数 ​

ThinkTerm が起動するすべての端末で、次が設定されます。

変数値
THINKTERM1
THINKTERM_VERSIONThinkTerm のバージョン
TERM_PROGRAM、TERM_PROGRAM_VERSIONWezTerm とバージョン。WezTerm を認識するツールが動き続けるよう残しています。ThinkTerm を見分けるには THINKTERM を調べてください
WEZTERM_PANEペインの ID。thinkterm cli はこれを既定のペインとして使います
WEZTERM_UNIX_SOCKETマルチプレクサのソケット。ThinkTerm が持っている場合のみ
THINKTERM_MUX_SERVER_IDペインが動いているマルチプレクサ。thinkterm tui はこれを使い、自分が中で動いているサーバーへの接続を断ります
THINKTERM_CONFIG_FILE、WEZTERM_CONFIG_FILE読み込まれた設定ファイル。読み込んだ場合のみ
THINKTERM_CONFIG_DIR、WEZTERM_CONFIG_DIRその設定ファイルのあるディレクトリ

ThinkTerm が読む変数は次のとおりです。

変数効果
THINKTERM_CONFIG_FILE、WEZTERM_CONFIG_FILE読み込む設定ファイル。探索順 を参照
THINKTERM_DISABLE_SOUND何か値を設定すると、設定ウィンドウの選択にかかわらず通知音が鳴らなくなります
THINKTERM_UPDATE_TOKENアップデート確認で送る GitHub トークン。匿名の回数制限を外すためのものです。環境にある GITHUB_TOKEN が送られることはありません。アップデート を参照
THINKTERM_NO_PRIVACY_DISCLAIMセッションサーバーに独立した macOS のプライバシー識別子を与える処理を省きます。macOS でのフォルダアクセス を参照
THINKTERM_TUI_CONFIGthinkterm tui が設定を読む場所。TUI を参照
WEZTERM_LOGログの絞り込み。WezTerm と同じです

関連 ​