Windows Terminalの正式版がリリースされたが、設定はプロファイルを編集する必要があるなど、少々ハードルの高いものとなっている。ただ、ルールが分かればそれほど難しいものでもない。そこで、基本的なプロファイルの設定方法を紹介しよう。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftから正式版の配布が開始された「Windows Terminal」は、これまでのコンソール(conhost.exe)とは異なり、タブをサポートし、タブ内も複数のウィンドウに分割できるなど、機能が豊富になっている。ただ、一般的なWindowsアプリとは異なり、設定を全てJSONファイルで行わなければならず、設定変更のハードルが高くなっている。
そこで今回は、Windows Terminalの設定とカスタマイズに関して、プロファイル設定を中心に解説を行っていく。Windows Terminalのプロファイル設定マニュアルとして活用してほしい。なお、キー割り当てなどについては別途解説記事を予定している。
Windows Terminalは、Microsoft Storeからインストールが可能なので、まずはこれをインストールしておく。Microsoft Storeには正式版とPreview版があり、執筆時点では前者は「Ver.1.0.1401.0」、後者は「1.1.1671.0」がそれぞれ提供されていた。
正式版とプレビュー版は併存が可能である。プレビュー版は、アイコンに「PRE」の文字が付く。
GitHubには、msixパッケージがあり、ここからダウンロードしてインストールすることも可能だ。執筆時点では、Microsoft Storeと同じバージョンのパッケージをダウンロードできた。
なお、公式のドキュメントは、「Windows Terminal overview[英語]」にある。
Windows Terminalのタイトルバーにある[v]−[設定]を選択すると、「settings.json」というファイルが保存され、これを「開く」動作が行われる。このあたりに関しては、Windows 10 The Latest「ついに完成『Windows Terminal』の機能と使い方まとめ」を参照してほしい。
ここでは、既にVisual Studio Code(以下、VS Code)などのJSONエディタがインストールされているとして話をすすめていく。もちろんメモ帳でも編集は不可能というわけではない(VS Codeについては、Visual Studio Code早分かりガイド「Visual Studio Codeの使い方、基本の『キ』」を参照してほしい)。
「settings.json」は、以下のフォルダに保存されている。
%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
なお、「%USERPROFILE%\AppData\Local」は、「%LOCALAPPDATA%」と表記することも可能だ。コマンドラインからは、この表記方法を使い、cdコマンドなどでフォルダを開くことができる。エクスプローラーから開く場合には、シェルショートカットを使い、アドレスバーに以下のshellコマンドを入力する。
shell:Local AppData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
設定を間違ったなどで、完全にデフォルト値に戻すには、前記パスにある「settings.json」を削除すればよい。Windows Terminalを起動する前に「settings.json」を削除し、起動してから[v]−[設定]を選択すれば、新規に「settings.json」が作られる。
「settings.json」は、JSONファイルであるため、JSONの仕様に従った構造になっている。JSONは、テキストのみで、「データ」オブジェクト(プログラミングに堪能な人向けにいうと構造体のようなもの)を表現するものだ。大まかには、下図のような構造になっている。
中身は、大きく4つのパートに分かれている。説明の都合上、各パートを以下のように呼ぶことにする。
グローバル設定(先頭の「{」直後の部分)
プロファイル設定(「profiles」以降)
プロファイル共通デフォルト値(「defaults」以降)
プロファイル(「list」:以降)
個別プロファイル設定(「{」「}」でくくられている)
カラースキーム設定(「schemes」以降。初期状態では空)
キーボード設定(「keybindings」以降)
Windows Terminalは、設定に「カスケード構造」を採用しており、全ての設定値にデフォルト値がある。そのためデフォルト値は、「settings.json」には記述しなくていいようになっている。例えば、カラースキーム(配色)設定に何も定義しないのであれば、以下のような空のカラースキーム定義だけあればよい(あるいは何もなくてもよい)。
"schemes": [],
キーボード割り当ても同様なのだが、デフォルト値が決まった後で変更されたキー割り当て(クリップボードコピーと貼り付けを一般的な[Ctrl]+[C]キーと[Ctrl]+[V]キーに後から仕様変更した)があり、これが「settings.json」に定義されている。
なお、JSONスキーマでは、「//」から行末までを注釈として、記述を解釈しないようになっている。コメントの他、設定しないけれど参考として残しておきたい行は、その先頭に「//」を付ければWindows Terminalから無視される。
Windows Terminalから起動するシェルを指定するプロファイル設定を解説する。ここが、設定の中心部分になる。
Windows Terminalには、ダイナミックプロファイルと呼ばれる機能があり、インストールされているPowerShell CoreやWSLのディストリビューション(のシェル)を自動登録する機能がある。これは、settings.jsonの保存時に自動的に行われる(後述するグローバル設定で禁止することも可能)。
また、Windows 10に必ず含まれる、cmd.exeとpowershell.exeに関しては、デフォルト(defaults.jsonファイルとして見ることができる)としてプロファイル登録が行われている。これは、削除することはできないものの、プロファイル設定で「hiddenプロパティ」を使うことで、メニューから隠すことは可能だ。
プロファイル設定は、大きく2つの部分に分かれている。1つは、共通のプロパティ定義となる「プロファイル共通デフォルト値」と、シェルごとの設定となる「個別プロファイル設定」だ。基本的には、自分の好みをプロファイル共通デフォルト値で設定しておき、シェルごとの設定を個別プロファイル設定で行う。
このプロファイル設定に記述できるプロパティには、下表のようなものがある。「guid」や「name」などの一部のものを除けば、これらのプロパティは、「プロファイル共通デフォルト値」にも「個別プロファイル設定」のどちらにも記述できる。ただし、両方に同じプロパティを記述した場合には、個別プロファイルに記述した方が有効になる。
プロパティ | タイプ | デフォルト値 | 要 |
---|---|---|---|
acrylicOpacity | 数値 | 0.5 | アクリルの透明度(0〜1.0の浮動小数点値) |
antialiasingMode | 文字列 | grayscale | テキストのアンチエイリアスモードを指定。「aliased」「cleartype」「grayscale」から選択 |
background | 文字列 | (カラースキームで指定の値) | 背景色。16進形式の「#rgb」「#rrggbb」のどちらかで指定 |
backgroundImage | 文字列 | なし | 背景画像(jpg/png/gif)へのパス(指定時にはuseAcrylicをfalseにする必要がある) |
backgroundImage Alignment |
文字列 | center | 背景画像の位置合わせ方法。「center」「left」「top」「right」「bottom」「topLeft」「topRight」「bottomLeft」「bottomRight」から選択 |
backgroundImage Opacity |
数値 | 1.0 | 背景画像の透明度 |
backgroundImage StretchMode |
文字列 | uniformToFill | 背景画像の配置。「Fill」「None」「Uniform」「UniformToFit」から選択 |
closeOnExit | 真偽値 | graceful | 終了、起動の失敗のときににタブを閉じるかどうか。 ・「graceful」「true」 (エラーでなければ閉じる) ・「always」 (常に閉じる) ・「never」「false」(閉じない) |
colorScheme | 文字列 | Campbell | カラースキーム名の指定 |
commandline | 文字列 | cmd.exe | 起動するシェルプログラム名 |
cursorColor | 文字列 | (カラースキームで指定の値) | カーソルの色。16進形式の「#rgb」「#rrggbb」のどちらかで指定 |
cursorHeight | 整数値 | 25 | カーソルの高さを文字高に対するパーセンテージで指定。「cursorShape」が「vintage」の場合のみ有効。25〜100の整数 |
cursorShape | 文字列 | bar | カーソル形状。「vintage」「bar」「underscore」「filledBox」「emptyBox」 |
experimental. retroTerminalEffect |
真偽値 | false | 「true」にすると昔風のターミナル表示にする |
fontFace | 文字列 | Cascadia Mono | フォント名 |
fontSize | 整数値 | 12 | フォントサイズ |
foreground | 文字列 | 文字列 (カラースキームで指定の値) | 前景色。16進形式の「#rgb」「#rrggbb」のどちらかで指定 |
guid | 文字列 | プロファイルのGUID | |
hidden | 真偽値 | false | 「true」のとき、メニューに表示されない |
historySize | 整数値 | 9001 | 履歴保存数 |
icon | 文字列 | プロファイルのアイコン(ドロップダウンメニュー用) | |
name | 文字列 | プロファイル依存 | プロファイルの名前(ドロップダウンメニューの表示名) |
padding | 文字列 | 8,8,8,8 | テキスト表示領域周囲の余白(テキスト表示領域周囲の余白。「<上下左右の値>」「<上下の値>,<左右の値>」「<上の値>,<右の値>,<下の値>,<左の値>」のいずれかで指定) |
scrollbarState | 文字列 | visible | スクロールバーの状態を「visible」「hidden」で指定 |
selectionBackground | 文字列 | (カラースキームで指定の値) | 「colorScheme」の「selectionBackground」を上書き。16進形式の「#rgb」「#rrggbb」のどちらかで指定 |
snapOnInput | 真偽値 | true | キーボード入力時に入力位置までスクロールするかどうか |
source | 文字列 | プロファイルを生成したプログラムの名前 | |
startingDirectory | 文字列 | %USERPROFILE% | 起動時のカレントフォルダ(環境変数を指定可能) |
suppressApplicationTitle | 真偽値 | false | 「true」にすると、実行プログラム(シェル)側からのウィンドウタイトル変更を無視し、「tabTitle」の設定値を使う |
tabTitle | 文字列 | タブに表示する文字列 | |
useAcrylic | 真偽値 | false | Fluent Designのアクリルによる透明化 |
プロファイル設定に記述できるプロパティ |
Windows Terminalの設定は、「defaults.json」(編集不可)、settings.jsonと起動オプション(一部の指定のみ可)の3カ所に記述できる。前より後の設定個所の方が優先度が高くなり、同じプロパティは最後に記述したものが有効になる。WebページのCSS(Cascading Style Sheet)と同じ構造だ。
上表にあるプロパティのうち、プロファイル共通デフォルト値で設定しておくといいプロパティは、下リストのものだ。
"defaults": {
//キー入力したとき入力行を表示
"snapOnInput": true,
//フォントはMS明朝
"fontFace": "MS 明朝",
//フォントサイズは18ポイント
"fontSize": 18,
//カーソルは下側半分のみに表示
"cursorShape": "vintage",
//カラースキームにはCampbellを指定
"colorScheme": "Campbell",
//カーソルの色は白(#FFFFFF)
"cursorColor":"#FFFFFF",
//起動ディレクトリは、C:\
"startingDirectory": "c:\\",
//スクロールバーは表示しない
"scrollbarState":"hidden",
//背景を透明にする
"useAcrylic": true,
//透明度は0.5
"acrylicOpacity": 0.5,
//vintageカーソルの高さは100%
"cursorHeight": 100
},
Windows Terminalは、プロファイルごとにフォントを指定できる。しかし、1つのフォントだけしか指定できないため、日本語以外のフォント(Windows Terminalに付属するCascadiaなど)を指定してしまうと、日本語の文字間隔が妙に空いてしまう。これを避けるには、「fontFace」プロパティに「MS ゴシック」や「MS 明朝」(MSは全角、間のスペースは半角)といった日本語の等幅(プロポーショナルでない)フォントを指定する。これにより日本語の文字間隔を詰めることができる。
なお、Windows Terminal自体は、内部的には文字コードをUTF-8で扱っているため、日本語表示は英語フォントを設定しても常に行える。問題は、指定した英語フォントで表示できない文字があったときに起こるフォールバックでどのフォントが選ばれるかが分かりにくく、加えてそのときに文字間などの調整が行われないため、文字間隔が広がってしまうことだ。
VS Codeなどでは、フォールバックを想定して複数のフォントを表示フォントとして指定できるようになっているが、Windows Terminalではテキスト描画システムの仕様で単一のフォントしか指定できない。将来的には対応予定にはなっているようだが、現時点では日本語フォント、欧文フォントなどのどれか1つのみを指定する。日本語文字列を表示させたときの文字間という「細かい」話なので、このあたりが全く気にならないというのであれば、特に設定する必要はない。
「fontSize」は、見やすいと感じるサイズは、利用環境で決まってしまい、シェルごとや環境で変更することはないので、ディスプレイなどの利用環境に合わせてデフォルト値で設定しておくといいだろう。
「cursorShape」は、好みの分かれるところだ。何も指定しないデフォルトでは俗にキャレットなどと呼ばれる縦棒("bar")になっている。標準のconhost.exeと同じにするなら「vintage」にする。
なお、「vintage」を指定した場合のみ、「cursorHeight」で高さを「25%」〜「100%」の間で指定できる。高さを25%以下にしたい場合は「underscore」(ただし高さの指定はできない)に、100%ならば「filledBox」を指定してもよい。昔よく見かけた反転表示のカーソルはないが、「emptyBox」ならば、下の文字が常に見える。これも、細かく変えるものではないのでプロファイル共通デフォルト値で設定しておく。
個別のプロファイル設定で設定する必要があるのは、「name」と「commandline」プロパティだ。その他には、後述のグローバル設定で「defaultProfile」に指定するなら「guid」プロパティが必須となる。「guid」はプロファイルを区別するために使われる。Windows Terminalのプロファイル内でプロファイル同士が区別できるように、別々のGUIDをそれぞれ指定すれば問題ない。必要な場合には、PowerShellのコマンドであらたなGUIDを生成することも可能だ。
C:\> powershell -Command "[Guid]::NewGuid()"
C:\> [Guid]::NewGuid()
ただし、settings.json内で重複しないという前提なら、ファイル内の「guid」を書き換えても条件は満たされる。例えば、「コマンド プロンプト」には、デフォルトで「{0caa0dad-35be-5f56-a8ff-afceeeaa6101}」というGUIDが指定されているが、先頭のゼロを1に書き換えてもエラーにはならず、問題なく動作する。これを利用すれば、いちいちGUIDを生成させることなく、先頭の数字のみを「1」「2」「3」……と書き換えていくことで、defaultProfileで指定が可能な個別プロファイル設定を作ることができる。
具体的なサンプルを下リストに示す。筆者の場合、個別プロファイルでは、シェルの種類ごとに背景色を「background」で設定してある。CMD.EXEなら黒(#000000)、PowerShellなら青(#00005A)、WSLなら茶色(#473a00)といった具合だ。背景色を変えることで、ひと目でシェルの違いが認識できるようになる。
"list": [
{ // デフォルトのCMD.EXEのプロファイルを変更したもの
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
// nameはメニュー名になる
"name": "コマンド プロンプト",
//commandlineで起動するコマンドやオプションを指定
"commandline": "cmd.exe /V:ON",
//tabTitleは、タブに表示される文字列
"tabTitle": "CMD(JP)",
//backgroundで背景色を指定
"background": "#000000",
//hiddenはメニューに表示するかどうかを指定
"hidden": false
}, //listの角括弧の中はカンマで区切る
{ //デフォルトのcmd.exeのGUIDを書き換えてみた
"guid":"{1caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "英語コマンド プロンプト",
//フォントを変更
"fontFace": "Cascadia PL",
//起動するコマンドを指定
"commandline": "cmd.exe /V:ON /k chcp 437 && CLS && VER && CHCP",
//組み込まれているCMD.EXE用アイコンを指定
"icon": "ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png",
"background": "#000000",
"tabTitle": "CMD(US)",
"hidden": false
},
{ //デフォルトの組み込みPowerShellのプロファイル
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
//PowerShell系の背景色を指定
"background": "#00005a",
"hidden": false
},
{ //作成したスクリプトを起動するプロファイル
"guid": "{71c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "PowerShell TEST",
"background": "#00005a",
//組み込みのPowerShellアイコンを指定
"icon": "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
"tabTitle": "Test",
//Powershell.exeでプロファイル読み込みなし、コマンド実行
"commandline": "Powershell.exe -NoProfile -NoExit -command $(c:\\Temp\\PSTest\\test.ps1)"
},
文字色は、シェル上で実行するアプリによって、いろいろと使われることがあるので、デフォルトの白のままでいいだろう。もちろん、個別プロファイルでカラースキームを指定しまうことも可能だ。カラースキームを指定すると、色に関する指定、文字色、背景色、カーソル色、選択時の背景などをまとめて指定できる。
「commandline」設定により、起動するシェルとその初期設定が可能になる。同じシェルで設定を変えたものをそれぞれプロファイルに登録することもできる。コンソールアプリケーションなら何でも設定できるため、sshやtelnetなどのプロファイルを作ることも可能だ。
cmd.exeの場合、/kオプションでバッチファイルやコマンドを指定できる。レジストリで起動スクリプトを指定する方法もあるが、これだと全てのcmd.exeの起動に影響してしまうので、かえって面倒になりやすい。
PowerShellの場合、特定のコマンドを実行させたい場合には、「-Commnad <コマンドライン>」オプションを使うが、このとき「-NoExit」オプションを併用する。これを指定しないと、コマンドの実行後にPowerShellは終了してしまう。PowerShellのProfileを読み込ませたくない場合には「-NoProfile」を指定する。
なお、個別プロファイル設定の順番は、メニューの順番になり、起動オプションで指定する「index」の設定値にもなる。先頭から9個のプロファイルは、[Ctrl]+[Shift]+[数字]キーで新規タブとして開くことも可能だ。このため順番は利用頻度や関連性を考慮して決めた方がよい。
また、混乱をさけるなら、「defaultProfile」に指定した個別プロファイルは、先頭に持っていきメニューの先頭にしておくのがいいだろう。その上で、個別プロファイル中で「hidden」プロパティを「true」にすることでメニューへの表示を禁止できる。ダイナミックプロファイルで登録されるが、使わないプロファイルがあるならこれで禁止できる。
プロファイル共通デフォルト値でフォントを指定していても、個別プロファイルで別のフォントを指定することも可能だ。日本語を使わないシェルがあるなら、英語用など別の言語のフォントを指定することで、きれいな欧文表示が利用できる。Windows Terminalに付属してくるCascade Codeフォントには、プログラミングリガチャーなど、プログラミング時に便利なフォントなので、これを指定した個別プロファイルを作ることも可能だ。
Windows Terminalは、背景を透明にしたり、ビットマップを背景にしたりすることもできる。遊び的な機能だが、背景などで動作しているシェルを区別するといった使い方も可能だ。
まず、背景の透明化は、Fluent DesignのAcrylicが使われる。Acrylicは、半透明のBrushで、背景に使うと、デスクトップや下のウィンドウがぼんやりと見えるようになる。これを使うことで、ウィンドウが背景の手前に表示されているように見えるため、Fluent Designでは、奥行きを表現するために使われる。この指定は、プロファイルで行うため、プロファイル共通デフォルト値で設定すれば、全てのプロファイルで背景を透明にするといった指定が可能だ。具体的には、「useAcrylic」プロパティで有無を設定し、「acrylicOpacity」で透明度(正確には不透明度)を指定する。
背景にビットマップを指定するには、「backgroundImage」でビットマップファイル(JPEG、PNG、GIF)を指定し、「backgroundImageAlignment」で位置合わせ方法を、「backgroundImageOpacity」で透明度を、「backgroundImageStretchMode」で拡大縮小方法を指定する。なお、前述の「useAcrylic」と「backgroundImageOpacity」を組みあわせると、背景とビットマップを共に透過させることもできる。
「backgroundImageAlignment」は、「top」「bottom」「center」などのキーワードでビットマップ画像とタブ、ペインとの位置合わせ方法を指定する。また、Windows Terminalのウィンドウはサイズが変わった場合でも、ビットマップ画像はタブやペインの大きさに合わせて拡大縮小させることが可能で、これを「backgroundImageStretchMode」で指定する。指定できるのは、下画面で示した4種類だ。
「backgroundImageAlignment」は、「center」を指定すればいいだろう。なお、背景画像は、PNG形式などにして背景部分を透明にしておくと、画像とWindows Terminalの背景部分が区別できなくなる。このため、背景が透明な場合には、「backgroundImageStretchMode」は「Uniform」「None」のどちらでも構わないだろう。背景が透明ではない、風景画像のようなものは、「Uniform」「UniformToFit」としてゆがまないように表示させた方がいい。
このあたりをまとめて設定したのが、下リストだ。ちなみにWindows Terminalの背景が透明になるのは、フォーカスを持っているとき(ウィンドウを選択しているとき)のみで、他のウィンドウを選択すると背景は不透明な状態になる。
"defaults": {
:
<省略>
:
//すべてのタブ/ペインの背景を透明にする
"useAcrylic": true,
//透明度は0.5
"acrylicOpacity": 0.5
},
"list": [
{
:
<省略>
:
//背景画像を指定。パス区切りの\は\\と記述する
"backgroundImage": "C:\\Temp\\00-WindowsTerminal\\cmd.png",
// 背景は中央合わせ
"backgroundImageAlignment": "center",
"backgroundImageOpacity": 0.5,
// 背景画像は、縦横比を維持してタブ/ペイン全体を覆うように表示
"backgroundImageStretchMode": "uniformToFill"
},
グローバル設定は、settings.json全体をくくる「{」から「}」の内側で、「profiles」「schemes」「keybindings」の外にある部分だ。JSONの文法上は、プロファイルやカラースキーム、キー割り当ての外側であれば、どこにでも記述できる。ただ、分かりやすくするなら、settings.jsonの先頭の「{」の直後にまとめて記述しておくのがいいだろう。なお、グローバル設定のほとんどのプロパティは、defaults.jsonで指定されているため設定する必要はない。
グローバル設定で指定可能なプロパティを下表に示す。
プロパティ | タイプ | デフォルト値 | defaults. json内指定 |
概要 |
---|---|---|---|---|
alwaysShowTabs | 真偽値 | true | ○ | タブを常に表示するかどうか |
confermCloseAllTabs | 真偽値 | true | ○ | 複数タブの終了時に確認を行うかどうか |
copyFormatting | 真偽値 | false | ○ | fontや表示色などを含んだ書式付きテキストをクリップボードにコピーする |
copyOnSelect | 真偽値 | false | ○ | 「true」なら選択した文字列をすぐにクリップボードにコピーする |
defaultProfile | GUID文字列 | PowerShellのGUID | ○ | デフォルトプロファイルのGUID |
disabledProfileSources | 文字列の配列 | [] | × | 以下の3つの文字列の組み合わせ:"Windows.Terminal.Wsl", "Windows.Terminal.Azure", "Windows.Terminal.PowershellCore" |
experimental.rendering. forceFullRepaint |
真偽値 | false | × | 「true」のときWindows Terminalは表示フレームごとに画面全体を再描画する。「false」では表示フレーム間に行われた画面の更新部分だけをレンダリングする |
experimental.rendering. software |
真偽値 | false | × | 「true」のときソフトウェアレンダラー(WARP)を利用する。「false」ならGPUを利用 |
initialCols | 整数値 | 120 | ○ | ターミナルの文字数。「LaunchMode」が「maximized」のときには無視される |
initialPosition | 文字列 | "," | × | ターミナルウィンドウの左上の座標。プライマリーディスプレイの左上の座標からの相対座標。以下の形式の座標指定が可能: ・システムデフォルトを使用: "," ・XとYの両座標を指定: "<X>,<Y>" ・X座標のみ指定: "<X>," ・Y座標のみ指定: ",<Y>" |
initialRows | 整数値 | 30 | ○ | ターミナルの行数。「LaunchMode」が「maximized」のときには無視される |
launchMode | 文字列 | default | ○ | 起動時のウィンドウ状態を「default」または「maximized」で指定 |
rowsToScroll | 整数値またはsystem | system | ○ | マウスホィールのスクロール量。「system」はシステム設定に従う |
showTabsInTitlebar | 真偽値 | true | ○ | タイトルバーにタブを表示するかどうか(要再起動) |
showTerminalTitleInTitlebar | 真偽値 | true | ○ | タイトルを表示するかどうか |
snapToGridOnResize | 真偽値 | false | ○ | 「true」ならウィンドウサイズは表示領域が文字境界にスナップするよう変化する。「false」なら任意のサイズに変更できる |
tabWidthMode | 文字列 | equal | ○ | タブの幅設定。「equal」「titleLength」のどちらかを指定 |
theme | 文字列 | system | ○ | 「system」「dark」「light」のどれか |
wordDelimiters | 文字列 | 「./\()"'- :,.;<>~ !@#$%^&* |+=[]{}~?」、UnicodeのU+2502、タブ文字 |
○ | ワード区切り文字(端末側で単語を認識してワードラップなどを行う場合に使われる。エスケープシーケンス機能の一部) |
グローバル設定で指定可能なプロファイル |
デフォルトプロパティにするには、個別プロファイル側にguid指定が必須となる。デフォルトプロファイルは、Windows Terminalをコマンドラインなしで起動した場合や、プロファイル指定がないコマンドラインを指定した場合に使われるプロファイルだ。
この他、キー割り当てで新規にタブやペインを開くことができる。デフォルトでは、組み込みのPowerShellが起動するようになっているが、昔からのユーザーは、CMD.EXEにしておいた方が安心だろう。
また、ここにある「"$schema": "https://aka.ms/terminal-profiles-schema",」は、JSONスキーマの定義なので、削除しないようにする。これがないと、JSONエディタは、setting.jsonに対してJSONスキーマを適用しなくなる。
また、Windows Terminalのダイナミックプロファイルがどうしてもイヤな場合には、disabledProfileSourcesプロパティで、WSL、Azure(Cloud Shell)、PowerShell Coreを個別に禁止できる。
起動時の横方向の文字数(「"initialCols"」)や行数(「"initialRows"」)などもグローバル設定で指定が可能だ。例えば、ペインで左右を区切って使うことが多いなら初期文字幅を「164(スクロールバーを表示しないときには「162」)」としておくと、左右分割したときにそれぞれに80桁を割り当てることができる。ペインで分割したとき、区切りのラインと、文字表示領域周囲の「Padding」で2文字分、ペイン区切り左側のスクロールバーの表示で2文字分を使うため、あらかじめその分を追加しておく必要がある。
このあたりを指定したグローバル設定部分を下リストに示す。
{ //settings.json冒頭の「{」
//この行は触らない
"$schema": "https://aka.ms/terminal-profiles-schema",
//CMD.EXEをデフォルトプロファイルに指定
"defaultProfile": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
//マウスでテキストを選択したら即クリップボードにコピー
"copyOnSelect": true,
//HTML形式の書式付きテキストもクリップボードに同時にコピー
"copyFormatting": true,
//起動時の横幅は162文字
"initialCols": 162,
//Azure Cloud Shellは自動登録しない
"disabledProfileSources": ["Windows.Terminal.Azure"],
:
(以下省略)
Windows Terminalは、スタンドアロンのターミナルエミュレーターではないため、SSHやシリアルコンソールとして使うには、シェルから該当の機能を持ったプログラムを起動する必要がある。
そもそも、Windows 10では、コンソール機能とシェルやプロトコル処理といった部分の分担がUNIXやLinuxほど明確に区別されていなかった。そのため、SSHならば、ターミナルエミュレーションやプロトコルを処理するWindowsプログラムとして実現しなければならなかった。
コンソールアプリケーションになっていたTelnetやSSHクライアントもあったものの、conhost.exeがエスケープシーケンスを実装していなかったため、LinuxやUNIXのようにフルのテキストアプリケーションを利用できなかった。シリアルコンソールも同様で、シリアルポートの入出力を扱えるWindowsプログラムを開発し、エスケープシーケンスを実装する必要があった。
しかし、Windows 10では、「仮想コンソール」の概念が導入され、シェルやプロトコル処理プログラム、ターミナルエミュレーションといった処理を複数のプログラムで分担して扱うことが可能になった。このとき、Windows Terminalは、シェルの手前で動作する重要な「部品」となるソフトウェアだ。単純なフロントエンドなので、従来使われてきたターミナルソフトウェアの完全な代用にはならないものの、逆にシェル上で動作する各種プロトコルに対応したソフトウェアは開発がしやすくなったといえる。
Windows Terminalには、まだ少し荒削りな部分はあるが、今後の開発に期待したい。
Copyright© Digital Advantage Corp. All Rights Reserved.