5/19 に GA となった Windows Terminal 1.0 の設定は
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
に保存されています。
複数の Windows PC を持っていると共有させるのが面倒、ということで settings.json
を共有する方法です。
仕組み
- ファイル同期ツール
- シンボリックリンク
この二つを利用します。今回、ファイル同期ツールには OneDrive を利用していますが、Dropbox でも box でもできるでしょう。
論よりコード (OneDrive の場合)
現状の settings.json を OneDrive フォルダにコピーします。一般ユーザ権限の cmd で OK です。
copy %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json %OneDriveConsumer%
その後、Windows Terminal で参照されている settings.json を削除した後に mklink
でシンボリックリンクを作ります。管理者権限 cmd で実行します。
del /F %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
mklink %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json %OneDriveConsumer%\settings.json
※ 最初の del
は mklink
が失敗するのを避けるためです。本当に消しちゃっていいかは確認してください。
※ %OneDriveConsumer%
環境変数の展開時に空白文字が入っている場合 (例えばユーザ名に空白が入ってる等) は、適宜ダブルクォーテーションを付けたりしてください。
解説
シンボリックリンクを使うことで本体を別のところに移動しています。Linux 等の OS ではよくやる技ですね。
Windows Terminal は素直に %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
を参照してくれるので実現できています。
注意
settings.json は更新されたタイミングでファイル同期ツールによって同期されます。要するに上書きされちゃう恐れがあるので、更新する PC は1つの方がいいかもしれませんね。
あとがき
settings.json の設定自体は Windows Terminal 1.0 のカスタマイズで役に立った情報源 (2020年5月) をご覧ください。
ところで %OneDriveConsumer%
環境変数で 自分の OneDrive 管理下のパスが参照できるとは思わなかったです。(OneDriveの環境変数を活用する)便利。
settings.json は %OneDriveConsumer%\AppData\Roaming\WindowsTerminal\settings.json
とかに置くのが正解なのかな?
EoT