settings.jsonのJSONフラグメントのサポート
これまで、Windows Terminalは、settings.jsonという1つのファイルで設定してきた。GUI設定画面も実際にはsettings.jsonを編集したのと同じ結果となる。
v1.7では、settings.jsonに対して、JSONフラグメントと呼ばれる別ファイルを適用し、一部を変更できるようになった。これにより、settings.jsonを一回消去しても、JSONフラグメントは残るため設定を維持できる。
ただし、v1.7では、JSONフラグメントでは、既存のProfileの変更、Profileの新規追加、カラーschemaの追加しかできず、キー割り当てなどについてはJSONフラグメントから行うことはできない。以下のリストにJSONフラグメントの例を示す。
{
"profiles": [
{
// 既存のプロファイル"Windows PowerShell"を更新
//このUUIDは、"Windows PowerShell"のもの
"updates": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"fontSize": 16,
"background": "#0000FF"
},
{
// profileを新規追加
"name": "Shioda CMD",
"commandline": "CMD.exe",
"antialiasingMode": "aliased",
"fontWeight": "bold",
//下で新規追加したschemeを参照
"colorScheme": "Postmodern Tango Light"
}
],
"schemes": [
{
// schemesは、新規追加のみ。MSサイトのサンプルを利用
"name": "Postmodern Tango Light",
"black": "#0C0C0C",
"red": "#C50F1F",
"green": "#13A10E",
"yellow": "#C19C00",
"blue": "#0037DA",
"purple": "#881798",
"cyan": "#3A96DD",
"white": "#CCCCCC",
"brightBlack": "#767676",
"brightRed": "#E74856",
"brightGreen": "#16C60C",
"brightYellow": "#F9F1A5",
"brightBlue": "#3B78FF",
"brightPurple": "#B4009E",
"brightCyan": "#61D6D6",
"brightWhite": "#F2F2F2"
}
]
}
JSONフラグメントは、以下の2つのフォルダーに配置する。
%LOCALAPPDATA%\Microsoft\Windows Terminal\Fragments\<アプリ名>
C:\ProgramData\Microsoft\Windows Terminal\Fragments\<アプリ名>
ここで「<アプリ名>」は任意のフォルダー名でかまわない。最初のフォルダーは、ユーザー固有のJSONフラグメント、2つ目は、システム全体(全ユーザー共通)のJSONフラグメントの保存場所だ。ここに適当なファイル名の.JSONファイルを置けば、起動時にWindows Terminalが自動的二読み込んでsettings.jsonの設定を変更する。なお、UWPアプリケーションは、パッケージ内に専用のJSONフラグメントを保存できる。
JSONフラグメントは、アプリケーションが自身を起動するプロファイルなどを登録するための手段だ。現在では、PowerShellやWSLなどをWindows Terminalが自動的にプロファイルに登録するが、サードパーティのアプリケーションであっても、JSONフラグメントを登録すれば、自動的にプロファイルを追加できる。既存のプロファイルを変更できるようになっているのは、おそらく、PowerShell v7以降のバージョンアップなどを想定してのことだろう。
キー割り当てが可能な新規Action
以下の表は、v1.7のキー割り当てを示す。表中の赤字で示したのが、v1.7で追加されたActionとキー割り当てだ。キー割り当て列が空欄のものは、標準では、キー割り当てがなされていない。
次の表は、キーコード順の割り当てだ。従来の「Ctrl+,」がGUI設定の表示に変更になったため、settings.jsonを開くキー割り当ては「Ctrl+Shift+,」に割り当てが変更になっている。
Actionの「findMatch」は、「find」Actionのあと、前方再検索、後方再検索をするためのActionだ。従来もFindコマンドで表示されるボックスに矢印キーとして存在していた機能だが、キー割り当てができなかった。Microsoft系アプリの「F3」「Shift+F3」に、Google Chromeなら「Ctrl+G」「Ctrl+Shift+G」に相当する機能だ。ただし、何を割り当てるかは少し悩ましいところ。F3/Shift+F3は、PowerShell v7では、コマンドライン中の文字サーチ機能に割り当てられていて、Ctrl+Gは、bashでAbortに割り当てられている。なので、他のキーを割り当てるか、PowerShellやBash側の割り当てを変更するかを考える必要がある。
「toggleReadOnlyMode」Actionは、ペインの「読みとり専用」モードをオン/オフするもの。読みとり専用モードになると、キー入力操作やペインを閉じる操作が禁止され、タブに南京錠のアイコンが表示される。キー操作などをしようとするとメッセージボックスが表示されて読み取り専用モードであることが告げられる。これは、一時的に操作を禁止して誤操作による表示を禁止するなどの場合に使う。
そのほか、新規にWindows Terminalのウィンドウを開く「newWindow」Actionは「Ctrl+Shift+N」に割り当てられている。また、設定に「windowingBehavior」(GUIではスタートアップ→新しいインスタンスの動作)という項目が追加され、wt.exeとオプションなしで起動したときのウィンドウの扱いを指定できるようになった。設定値として「useNew」(新規ウィンドウを開く)、「useAnyExisting」(既存のウィンドウにタブを追加)、「useExisting」(同じデスクトップ内の既存のウィンドウにタブを追加)の3つの動作を指定できる。
そのほかの新規機能
ペインのfocus-follow-mouseモードは、マウスを載せるだけでペインを選択モード。X Window Systemが動作している環境のターミナル(xtermなど)が持つもので、タブが複数のペインに分割されているとき、ペイン上にマウスを載せるだけで選択状態とすることが可能だ。これがWindows Terminalでもできるようになった。
そのほかには、クリップボードからのペーストを「ブラケットモード」でするVTエスケープシーケンスなどがある。ブラケットモードとは、クリップボードから貼り付けを行う文字列の前後に特殊な文字シーケンス("ESC[200~"と"Esc[201~")を付加することで、アプリケーションがキー入力と区別ができるようにしたもの。一般にターミナル内で動作中のアプリケーションは、ユーザーのキー入力とクリップボードからの貼り付けを区別できない。ブラケットモードは、エディターなどで使われることが多く、ペースト時とキー入力を区別して振る舞うことができるようになる。
Windows Terminal Preview v1.7では、ようやく別のWindows Terminalウィンドウを制御できるようになった。なのであれば、コマンドラインオプションはもう少し強化してほしいところ。たとえば、自分が開いたウィンドウを閉じるといった機能などである。本来の予定であれば、今年5月がv2.0の完成予定。そろそろ開発も大詰めを迎えることになる。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ