4月22日にWindows Terminal v0.11が公開された。今年になって、1月と2月にベータ版、3月にはv0.10としてRC(Release Candidate。製品候補)版となり、現在の予定では、5月にv1.0が登場する予定だ。v0.11は、その直前のバージョンにあたり、新機能は少ないが、これまでに追加されてきた機能の整理(特に設定ファイル関係)がなされ、多数のバグFixもある。
そろそろ完成も近く、仕様もこのまま固まりそうなので、今回は、Windows Terminalについての情報を整理してみる。
そもそもWindows Terminalとは?
すでに本連載では何回も紹介してきたが、初めて読む方のために、Windows Terminalをあらためて解説しておく。Windows Terminalとは、Windowsのコンソールウィンドウ(conhost.exe)に代わる、あたらしいコンソールウィンドウアプリケーションだ。
これまでのWindowsでは、MS-DOS環境を模したconhost.exeを、すべてのコマンドラインアプリケーション用に利用していた。というか、Windows向けにコンソールアプリケーションを作れば、デフォルトではconhost.exeの中で動作するようになる。これは、Windows標準のコマンドラインインタープリターであるcmd.exeやPowerShell.exeだけでなく、さまざまな言語システムでも同様だった。
しかし、conhost.exeは、MS-DOSの画面を手本とし、それに国際化などを追加してWindowsの進化に対応してきたため、問題も少なくない。たとえば表示文字セットは、もともとはASCIIコードのような1バイト文字セットを想定していて、ここに日本語などの複数バイトを使う文字コードを入れるために、16bit文字コードなどを扱うように改良されている。このために制限もある。わかりやすいものとしては絵文字を表示できないという点だ。さらにUTF-8が標準となるLinuxアプリケーションが動作するWSLの登場により、問題は複雑になってきた。
マイクロソフトはconhost.exeの改良を進めてきたが、ついにそれを断念したのか、Windows Terminalというconhost.exeを代用するオープンソースプロジェクトを開始した。ただし、conhost.exeは、互換性のため現状維持したままWindowsには残り続けるようだ。
Windows Terminalは、高性能なマルチタブ方式のコンソールウィンドウアプリケーションとして開発された。開発やシステム管理などで多数のコンソールウィンドウをタブというかたちで統合し、さらにタブ内をPaneで分割して利用することも可能だ。また、専用のCascadiaフォントは、開発者向けにプログラミング言語の記号をきれいに表示できる「プログラミングリガチャー」の機能を持つ。
Windows Terminal使いこなしのポイントは設定
Windows Terminalは、設定をJSONファイルでする。このあたりが、従来のWindowsアプリケーションと大きく違うところだ。JSONは、元々JavaScript用に作られたテキスト型式のオブジェクトデータ表現形式だ。複雑なオブジェクトデータを表現できるものの、ルールが簡単でXMLほど面倒ではないし、CSVのように同一構造のレコードの並びに縛られるわけでもない。
Windows Terminalでメニューから設定を選ぶと、JSON設定ファイルが出力される。もし、JSONファイル(拡張子が.json)に関連付けがあれば、該当のアプリケーションが起動するが、関連付けがない場合には、テキストファイルなのでメモ帳が開く。
JSONには、JSONスキーマと呼ばれる仕様があり、これを解釈できるJSONエディターがあれば、編集時に補完入力や簡易文法チェックなどが可能になる。手軽に入手できるJSONエディターとしては、マイクロソフトのVS Code(ソフトウェア開発向けのテキストエディタ)がある。このあたりについては以前に解説した(「さらに開発が進む新コンソール「Windows Terminal」」)。
JSONエディターやメモ帳でsettings.jsonファイルを編集したあと保存するとWindows Terminalはこれを自動的に読み込んで設定を完了させる。このときにエラーがあれば、ダイアログで通知される。
なお、Windows Terminalは、設定項目にデフォルト値がある。Windows Terminalのメニューにある「設定」をAltキーを押しながら選択すると、settings.json同様にdefault.jsonというファイルが出力される。基本的な表記方法はどちらも同じだが、default.jsonは編集してもWindows Terminalはこれを無視する。なので、設定は必ずsettings.json側で行う。
ただし、default.jsonにある記述と同じものをsettings.jsonで繰り返す必要はない。settings.jsonに記述するのは、default.jsonとの差分だけでよい。
Windows Terminalのjsonファイルは、下の図のような構造になっている。
jsonファイル内は大きく4つのセクション「globals」「profiles」「schemes」「keybindings」に分かれている。このうち、「globals」「schemes」(カラー設定スキーム)と「keybindings」(キー割り当て)は、それぞれ専用の領域でその中で設定するものは限定されている。
しかし、profilesセクションに指定可能な設定項目は、profilesセクション中のdefault領域もしくは、profile領域で設定が可能で、さらに一部の設定項目は、コマンドラインの起動オプションやキー割り当てでも設定ができる。こうした複数の設定には、優先順位が付けられており、それに従って最終的に有効な設定が決定される。このあたりをまとめたのが下の表である。
profileは、Windows Terminalのタブで起動される「シェル」に関連する指定だ。cmd.exeやpowershell.exe、あるいはWSLのbashなどがタブ内で起動するプログラムとして指定でき、そのときのターミナル設定(たとえば、背景色や背景画像など)をprofile設定で指定できる。profileは複数設定が可能で、メニューやコマンドライン、あるいはキー割り当てでこれを指定してタブやペイン(タブ内を分割した表示領域)を開くことができる。
「schemes」は、色指定をグループ化したもの。Windows Terminalでは、最大16色を文字や背景の色として使い分けることができるが、こうした設定を個別に設定するのは面倒なので、schemeとしてまとめて設定しておき、profile側ではschemeを指定することで利用する色をまとめて設定する。schemeは、以下の表のような構造になっている。なお、標準のschemeは、すべてdefualt.jsonで定義されている。
これに対して「keybindings」は、キー割り当てをするもの。Windows Terminalのようなコンソールでは、テキストのコピーやペースト、画面スクロールなどはすべてキーで行う。また、タブを新規に開いたり、タブをペインに分割するといった操作もすべてキーで行う。keybindingsは、そのキー割り当てを行うものだ。ただし、このキー割り当てはすべてのprofileで共通である。キー割り当てに関しては、v0.11では、下の表のようになっている。
同じものをキー名で並べ直したのが、以下の表だ。基本的には、default.jsonでキー割り当てが定義されており、これを変更したい場合には、settings.jsonのkeybindingsセクションを使って割り当てを変更する。
この連載の記事
-
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第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
ユニコードで文字数を数える方法 - この連載の一覧へ