Windows Terminalと設定
本連載はPowerShell Coreがテーマだが、今回もWindows Terminalについて取り上げる。今後、WindowsにおけるPowerShell CoreまたはPowerSHell 7のデフォルトターミナルアプリケーションになる可能性が高いからだ。ここで基礎を抑えておこう。
Windowsアプリケーションは設定をダイアログなどから行うことが多く、設定ファイルを編集することで設定を行うということはあまりないように思う。しかし、Windows Terminalは最近のアプリケーションっぽく、設定変更がJSONファイルを編集するという行為になっている。執筆段階のWindows Terminalでは、右上の「∨」アイコンをクリックするとメニューが表示される。メニューから「Settings」をクリックすると、JSONファイルを編集できる。
JSONファイルの編集はWindows Terminalではなく別のアプリケーションで行う。JSON編集用のアプリケーションをインストールしていなければメモ帳が候補としてあがってくるが、ほかにエディタアプリケーションをインストールしてそれを選んでもよいし、統合開発環境で編集するのもよいだろう。
ここではVisual Studio Codeを使った編集例を紹介しておく(Visual Studio Codeは現在もっとも人気の高いエディタであり開発環境になっている。クロスプラットフォームで動作し、さまざまなプログラミング言語に対応している)。
Windows TerminalのJSON形式設定ファイル
Windows Terminalの設定ファイルは次のようなJSON形式のファイルになっている。すべてを掲載すると長くなってしまうので、要点だけ抜き出したものを次に掲載する。
Windows TerminalのJSON形式設定ファイル(省略版)
{
"globals" :
{
"alwaysShowTabs" : true,
"defaultProfile" : "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"initialCols" : 120,
"initialRows" : 30,
"keybindings" :
[
{
"command" : "closeTab",
"keys" :
[
"ctrl+w"
]
},
...
],
"requestedTheme" : "system",
"showTabsInTitlebar" : true,
"showTerminalTitleInTitlebar" : true
},
"profiles" :
[
{
"acrylicOpacity" : 0.5,
"closeOnExit" : true,
"colorScheme" : "Campbell",
"commandline" : "C:\\Program Files\\PowerShell\\6\\pwsh.exe",
"cursorColor" : "#FFFFFF",
"cursorShape" : "bar",
"fontFace" : "Consolas",
"fontSize" : 10,
"guid" : "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"historySize" : 9001,
"icon" : "ms-appx:///ProfileIcons/{574e775e-4f2a-5b96-ac1e-a2962a402336}.png",
"name" : "PowerShell Core",
"padding" : "0, 0, 0, 0",
"snapOnInput" : true,
"startingDirectory" : "%USERPROFILE%",
"useAcrylic" : false
},
...
],
"schemes" :
[
{
"background" : "#0C0C0C",
"black" : "#0C0C0C",
"blue" : "#0037DA",
"brightBlack" : "#767676",
"brightBlue" : "#3B78FF",
"brightCyan" : "#61D6D6",
"brightGreen" : "#16C60C",
"brightPurple" : "#B4009E",
"brightRed" : "#E74856",
"brightWhite" : "#F2F2F2",
"brightYellow" : "#F9F1A5",
"cyan" : "#3A96DD",
"foreground" : "#F2F2F2",
"green" : "#13A10E",
"name" : "Campbell",
"purple" : "#881798",
"red" : "#C50F1F",
"white" : "#CCCCCC",
"yellow" : "#C19C00"
},
...
]
}
勘の鋭い方ならこれで設定ファイルの構造は理解できるだろう。
globalsに全体の設定とショートカットキーの設定が用意されている。profilesにはシェルごとの設定が用意され、schemesにはprofilesのシェルが指定するカラーテーマが定義されている。
このファイルを編集して保存すると、リアルタイムにWindows Terminalの設定が変わり即時反映される仕組みになっている。
設定項目とその内容をざっとまとめると次のようになる。
項目 | 値 | 内容 |
---|---|---|
alwaysShowTabs | true | 常にタブUIを表示 |
initialCols | 120 | 初期幅 |
initialRows | 30 | 初期高さ |
defaultProfile | デフォルトシェルを指定(GUID) | |
keybindings | ショートカットキー設定 | |
closeTab | ctrl+w | タブを閉じる |
newTab | ctrl+t | タブを新規作成 |
newTabProfile0 | ctrl+shift+1 | タブを新規作成(プロファイル0) |
newTabProfile1 | ctrl+shift+2 | タブを新規作成(プロファイル1) |
newTabProfile2 | ctrl+shift+3 | タブを新規作成(プロファイル2) |
newTabProfile3 | ctrl+shift+4 | タブを新規作成(プロファイル3) |
newTabProfile4 | ctrl+shift+5 | タブを新規作成(プロファイル4) |
newTabProfile5 | ctrl+shift+6 | タブを新規作成(プロファイル5) |
newTabProfile6 | ctrl+shift+7 | タブを新規作成(プロファイル6) |
newTabProfile7 | ctrl+shift+8 | タブを新規作成(プロファイル7) |
newTabProfile8 | ctrl+shift+9` | タブを新規作成(プロファイル8) |
nextTab | ctrl+tab | 次のタブへ移動 |
openSettings | ctrl+, | 設定を開く |
prevTab | ctrl+shift+tab | 前のタブへ移動 |
scrollDown | ctrl+shift+down | スクロールダウン |
scrollDownPage | ctrl+shift+pgdn | スクロールページダウン |
scrollUp | ctrl+shift+up | スクロールアップ |
scrollUpPage | ctrl+shift+pgup | スクロールページアップ |
switchToTab0 | alt+1 | タブ0へ移動 |
switchToTab1 | alt+2 | タブ1へ移動 |
switchToTab2 | alt+3 | タブ2へ移動 |
switchToTab3 | alt+4 | タブ3へ移動 |
switchToTab4 | alt+5 | タブ4へ移動 |
switchToTab5 | alt+6 | タブ5へ移動 |
switchToTab6 | alt+7 | タブ6へ移動 |
switchToTab7 | alt+8 | タブ7へ移動 |
switchToTab8 | alt+9 | タブ8へ移動 |
requestedTheme | system | テーマ |
showTabsInTitlebar | true | タブをタイトルバーに表示する |
showTerminalTitleInTitlebar | true | ターミナルタイトルをタイトルバーに表示する |
profiles | プロファイル(シェル)設定 | |
acrylicOpacity | 0.5 | 不透明度 |
closeOnExit | true | 終了時にタブを閉じる |
colorScheme | Campbell | カラースキーマ |
commandline | C:\Program Files\PowerShell\6\pwsh.exe | シェルへのパス |
cursorColor | #FFFFFF | カーソルカラー |
cursorShape | bar | カーソル形状 |
fontFace | Consolas | フォント指定 |
fontSize | 10 | フォントサイズ |
guid | GUID | |
historySize | 9001 | 履歴サイズ |
icon | アイコン指定 | |
name | PowerShell Core | シェル名 |
padding | 0,0,0,0 | パディング |
snapOnInput | true | |
startingDirectory | %USERPROFILE% | 初期ディレクトリ |
useAcrylic | false | |
schemes | カラースキーマ | |
background | #0C0C0C | 背景色 |
black | #0C0C0C | 黒 |
blue | #0037DA | 青 |
brightBlack | #767676 | 明るい黒 |
brightBlue | #3B78FF | 明るい青 |
brightCyan | #61D6D6 | 明るいシアン |
brightGreen | #16C60C | 明るい緑 |
brightPurple | #B4009E | 明るい紫 |
brightRed | #E74856 | 明るい赤 |
brightWhite | #F2F2F2 | 明るい白 |
brightYellow | #F9F1A5 | 明るい黄 |
cyan | #3A96DD | シアン |
foreground | #F2F2F2 | 前景色 |
green | #13A10E | 緑 |
name | Campbell | スキーマ名称 |
purple | #881798 | 紫 |
red | #C50F1F | 赤 |
white | #CCCCCC | 白 |
yellow | #C19C00 | 黄 |
設定のいくつかは変更しても反映されないというか、まだ実装されていなかったりする。このあたりはいずれ設定が反映されるだろう。また、逆にサポートされているがデフォルトでは使われていない設定もある。
設定変更のサンプル
実際にJSONファイルを編集して保存してみよう。即座に設定が反映されることを確認できると思う。たとえば、次のスクリーンショットはWindows TerminalのJSON形式設定ファイルをVisual Studio Codeで編集しているところだ。タブの新規作成(newTab)のショートカットキーがCtrl-Tになっていることがわかる。
この部分を、たとえば次のようにCtrl-Bに変更してみよう。
この状態でJSONファイルを保存すると、Ctrl-Bでタブの新規作成ができることを確認できる。逆に、これまで使用できていたCtrl-Tではタブの新規作成ができなくなっていることも確認できると思う。
続いてはもっとわかりやすくカラースキーマを変更してみよう。次のスクリーンショットはWindows Terminalのデフォルトのカラースキーマで表示したものだ。
該当するプロファイルのcolorSchemeの項目を別のものに変えてみよう。デフォルトではCampbellになっていると思う。ここをたとえば次のようにSolarized Lightに変更してみる。どういった名前が利用できるかはJSON形式設定ファイルのスキーマの部分に記載されているnameを追っていけば調べることができる。
編集して保存すると次のようにカラースキーマが瞬時に切り替わる。
次はOne Half Darkへ変更してみよう。
変更を保存すると次のようにカラースキーマがOne Half Darkへ切り替わる。
デフォルトの設定には含まれていないのだが、Windows Terminalではターミナルの背景に画像ファイルを指定することができる。次のように画像ファイルと透過率の設定、どのようにレンダリングするのかの指定を追加すると、プロファイル(シェル)ごとに背景画像を指定することができる。
設定を保存すると次のように瞬時に背景画像が表示される。
こんな感じでJSONファイルを編集するという行為が、Windows Terminalの設定を変更するという行為になっている。慣れないと驚くかもしれないが、慣れてしまえばどうということもない。設定ファイルをJSON形式で提供し、そのファイルを編集することで設定を変更するというのは最近の開発系アプリケーションではよく行われている方法だ。Windows Terminalもこうした形式にならったものとみられる。
設定を調整して好みのターミナルに
ターミナルアプリケーションの設定、特にカラー設定は好みが出やすい部分だ。自分の作業しやすいターミナルを用意する方法のひとつは、自分でカラー設定を調整することにある。
ここで紹介したようにWindows Terminalの設定はJSONファイルを編集するだけだ。いまのところ必要最小限の設定は提供されているように見える。今後デフォルトで使われていくことが想定されるアプリケーションであるだけに、早めに慣れておきたい。