2019年春から約1年間にわたってプレビュー公開されていたWindows Terminalだが、今年5月に正式版であるバージョン1.0がリリースされたことをきっかけに初めて使い始めたというユーザも少なくないだろう。そこで本連載では、Windows Terminalを使いこなす上で重要な機能を改めて紹介している。前々回/前回は、ターミナル作業の効率を高める上で最も基本となるタブ機能とペイン機能について取り上げた。
作業効率を高めるという観点では、もう一つ押さえておきたい項目として、設定ファイルを使ったカスタマイズがある。ターミナルを使った作業に慣れてくると、文字色や背景色、フォントやキーボードショートカットなどを自分なりに使いやすいようにカスタマイズしたくなるものだ。しかしWindows Terminalには、現在のところ便利な設定用ダイアログのようなものは用意されておらず、テキスト形式の設定ファイルを自分で書き換えるしかないため、慣れていない人は少々戸惑うかもしれない。今回は、設定ファイルの全体の構造について解説したい。
2種類の設定ファイル
Windows Terminalには、「defaults.json」と「setting.json」という2種類の設定ファイルがある。実際にユーザーが編集するファイルはsetting.jsonのほうになる。以前にも触れたが、プレビュー版の頃のファイル名は「profile.json」だったが、正式版になるにあたってsettion.jsonに名前が変更された。default.jsonのほうはデフォルトの設定を保持するファイルで、一般ユーザーは編集する権限を持っていない。setting.jsonにカスタム設定がない場合は、defalul.jsonの設定値が適用される。
setting.jsonについては、前回ペインのショートカットキーを追加する際もすでに編集している。setting.jsonは、タブバーの右端にある「∨」アイコンでプルダウンメニューを表示させ、そこから[設定]を選べば開ける。または、キーボードショートカットの「Ctrl」+「,」でも同様に開くことができる。実際のファイルは「%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState」ディレクトリにあるので、エクスプローラなどから直接このファイルを開いて編集してもよい。
なおdefault.jsonは、同じプルダウンメニューの「設定」を、キーボードの「Alt」キーを押しながらクリックすることで開くことができる。デフォルトの設定値を調べたい場合には、このファイルを開いて確認するといいだろう。
設定ファイルの構造
setting.jsonとdefault.jsonは、JSON(JavaScript Object Notation)と呼ばれるフォーマットで記述されている。以下の図は、setting.jsonの全体の構造を示したものである。
全体は「{」と「}」に囲まれており、全ての設定項目がそのなかに記述される。初期状態では、この設定ファイルは大きく分けて次の4つのパートから構成されている。
- Windows Terminal全体の設定
- 各ターミナルアプリのプロファイル設定
- カラースキームの設定
- キーボードショートカットの設定
「profiles」の「{」と「}」に囲まれた部分にはターミナルアプリごとの設定がプロファイルとして登録されている。すでにご存じのように、Windows Terminalでは「Windows PowerShell」「コマンドプロンプト」「Ubuntu」「Azure Cloud Shell」の4種類のターミナルアプリが最初から選択できるので、それぞれのアプリのためのプロファイル設定が用意されている。次の図はsetting.jsonのprofilesの設定箇所を抜粋したものである。
「list」の部分に、4つのプロファイル設定が並んでいることが確認できる。その上の「default」の部分には、全てのプロファイルに共通の設定を記述する。それぞれの設定値は「項目名」と「値」のセットで表される。例えば、各プロファイルにはそれぞれプロファイルIDの設定があるが、それは項目名が「guid」、値が「{61c54bbd-c2c6-5271-96e7-009a87ff44bf}」のような数字と文字の羅列になっている。
さて、「profiles」よりも上の部分には、Windows Terminalの全体に適用される設定を記述する。ここの「defaultProfile」は、新規でタブを開いた際に使用するターミナルアプリの種類を、プロファイルのIDで設定している。デフォルトでは上の図のようにPowerShellのguidが設定されているはずだ。これを、例えばUbuntuのguidに書き換えると、タブを新しく開いたときにターミナルアプリとしてUbuntuが使われるようになる。
「schemes」の部分には、カラースキームの設定を記述する。カラースキームは、背景や文字色などの色設定のセットを定義したものである。「keybindings」は、前回も少し説明したように、キーボードショートカットに関する設定を記述する場所になる。これらの設定については次回以降で詳しく紹介したい。
なお、設定ファイルの構造はdefault.jsonもほぼ同じになっている。
プロファイルの設定
ターミナルアプリごとのプロファイル設定についてもう少し詳しく見てみよう。前述のように、「list」の「[]」に囲まれた部分が各プロファイルの設定で、1つのプロファイルごとに「{}」で囲まれている。筆者の環境では、この部分は「PowerShell→オマンドプロンプト→Ubuntu→Azure Cloud Shell」という順番で並んでいる。この並びが、プルダウンメニューに表示される順番になる。
例えば、これを次のように並べ替えてみよう。
"list":
[
{
"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl"
},
{
// Make changes here to the powershell.exe profile.
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"hidden": false
},
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": false,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
},
{
// Make changes here to the cmd.exe profile.
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "コマンド プロンプト",
"commandline": "cmd.exe",
"hidden": false
}
]
すると、プルダウンメニューの表示順も設定ファイルの順番に応じて変わることが確認できる。キーボードショートカットの数字キーも変わっているので注意が必要だ。
さて、デフォルトで各プロファイルに使用されている設定項目には次のようなものがある。
項目名 | 設定内容 | 形式 |
---|---|---|
guid | 一意のID | {00000000-0000-0000-0000-000000000000} |
name | プロファイル名 | 任意の文字列 |
commandline | ターミナルアプリケーションの実行ファイル名 | 実行ファイル名 |
hidden | このプロファイルをメニューに表示するか否か | true/false |
source | プロファイルを生成したプロファイルジェネレーターの名前 | 文字列 |
PowerShellやコマンドプロンプトは、Windows Terminal本体とは異なる外部のプログラムを利用するかたちになっているので、このようなケースでは「commandline」という項目にそのプログラムの実行ファイル名を指定する必要がある。実行ファイルはPATH環境変数が通っている場所に配置されていなければならない。Ubuntu(WSL)やAzure Cloud Shellは、Windows Terminal内に用意されたシェル機能なので、実行ファイル名は必要ない。「source」という項目が設定されているが今はあまり気にしなくていいだろう。
hidden項目は、プルダウンメニューにこのプロファイルのターミナルアプリを表示するかどうかを決定する。デフォルトでは全て「false」になっているが、ここを「true」に書き換えると、プルダウンメニューに表示されなくなる。次の例は、Azure Cloud Shellのhidden項目を「true」にしてみたものである。
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": true,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
},
こうすると、次のようにプルダウンメニューでAzure Cloud Shellが表示されなくなる。普段使わないターミナルアプリは、この設定で非表示にしておくといいかもしれない。
設定ファイルの編集には、最初は戸惑うかもしれない。だが、非常に自由度が高いので、一度全体の構造を把握してしまえば自分なりの設定を作るのもそれほど難しくないはずだ。次回はカラースキームやキーボードショートカットの設定について取り上げたい。