Windows Terminal の設定ファイルは2つある
Windows向けに開発されている多くのGUIアプリケーションは、通常そのアプリケーションが提供している設定ダイアログを操作して設定を行う。しかしながらWindows Terminalの場合は異なり、テキスト形式の設定ファイルを編集して設定を行う仕組みになっている。
設定を行う際は、ウインドウ右上の「∨」アイコンをクリックして表示されるプルダウンメニューから「Settings」を選択する。これでテキストエディタが立ち上がり、設定ファイルが開く。
「Settings」を選択すると、通常は標準のテキストエディタである「メモ帳」を使って設定ファイルが開かれる。Windows Terminalの設定ファイルは、JSON(JavaScript Object Notation)と呼ばれる表記法を採用しており、この表記法に則ったテキスト形式のファイルを編集して設定を行うようになっている。
実は、Windows Terminalには設定ファイルが2つ用意されている。1つがデフォルトの設定を持つファイル「defaults.json」で、もう1つがユーザーのカスタマイズ用に用意されているファイル「profiles.json」だ。defaults.jsonは起動時に生成される設定ファイルとなっており、エディタで編集することは可能だが書き込んだ設定は保存しても破棄されてしまう。
Windows Terminalの設定をカスタマイズしたい場合は、profiles.jsonを利用する。そのため、プルダウンメニューから「Settings」を選択した場合、こちらの設定ファイルが開くようになっている。なお、defaults.jsonを開きたい場合は、「Alt」キーを押しながら「Settings」を選択すればよい。各設定ファイルの中身はそれぞれ以下のようになっている。
■JSON形式設定ファイルdefaults.json(一部省略)
// THIS IS AN AUTO-GENERATED FILE! Changes to this file will be ignored.
{
"alwaysShowTabs": true,
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"initialCols": 120,
"initialRows": 30,
"requestedTheme": "system",
"showTabsInTitlebar": true,
"showTerminalTitleInTitlebar": true,
"tabWidthMode": "equal",
"snapToGridOnResize": false,
"wordDelimiters": " /\\()\"'-.,:;<>~!@#$%^&*|+=[]{}~?\u2502",
"profiles":
[
{
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"hidden": false,
"startingDirectory": "%USERPROFILE%",
"closeOnExit": "graceful",
"colorScheme": "Campbell Powershell",
"cursorColor": "#FFFFFF",
"cursorShape": "bar",
"fontFace": "Consolas",
"fontSize": 12,
"historySize": 9001,
"icon": "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
"padding": "8, 8, 8, 8",
"snapOnInput": true,
"useAcrylic": false
},
...
],
"schemes":
[
...
{
"name": "Campbell Powershell",
"foreground": "#CCCCCC",
"background": "#012456",
"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"
},
...
],
"keybindings":
[
{ "command": "closePane", "keys": [ "ctrl+shift+w" ] },
{ "command": "closeWindow", "keys": [ "alt+f4" ] },
{ "command": "copy", "keys": [ "ctrl+shift+c" ] },
{ "command": "decreaseFontSize", "keys": [ "ctrl+-" ] },
{ "command": "duplicateTab", "keys": [ "ctrl+shift+d" ] },
{ "command": "increaseFontSize", "keys": [ "ctrl+=" ] },
...
]
}
■JSON形式設定ファイルprofiles.json(初期設定状態)
// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation
{
"$schema": "https://aka.ms/terminal-profiles-schema",
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"profiles":
[
{
// Make changes here to the powershell.exe profile
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"hidden": false
},
{
// Make changes here to the cmd.exe profile
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "cmd",
"commandline": "cmd.exe",
"hidden": false
},
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": false,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
}
],
// Add custom color schemes to this array
"schemes": [],
// Add any keybinding overrides to this array.
// To unbind a default keybinding, set the command to "unbound"
"keybindings": []
}
このようにWindows Terminalには設定ファイルが2つある。では、defaults.jsonで定義されている設定をprofiles.jsonで値を変更して設定した場合、どちらが有効になるかと言うと、profiles.jsonが優先される。defaults.json内で定義されていても、profiles.json内で設定し直しさえすれば、そちらが有効になるのだ。
Windows Terminalではこうした仕組みを採用することで、開発チーム側はアップデート時にdefaults.jsonの設定を書き換えて標準の設定を変えることができ、ユーザー側はprojfiles.jsonを書き換えることでカスタマイズできるようにしている。
Windows Terminalの設定方法
では、設定ファイルの中身を見ていこう。profiles.jsonのほうは標準ではほとんど設定が記載されていないため、説明にはdefaults.jsonを使いたい。
defaults.jsonの最初の数行はWindows Terminal全体の設定を定義している。「”profiles:{}”」にはターミナルアプリケーションごとの設定が、「”schemes:{}”」にはprofiles内で指定できるカラーテーマ「”colorScheme:”」の設定が、「”keybindings:{}”」でショートカットキーの設定が行われている。
先述の通り、defaults.jsonは都度生成される設定ファイルであるため、設定を変更したい場合はprofiles.jsonを編集して行う。defaults.jsonを見ればある程度設定の仕方がわかると思うので、カスタマイズする際はdefaults.jsonを見ながら、または設定をコピーしてprofiles.jsonを書き換えるとよいだろう。
defaults.jsonで設定されている項目とその内容を紹介しよう。まず、Windows Terminal全体の設定項目は次のようになっている。
項目 | 初期値 | 内容 |
---|---|---|
alwaysShowTabs | true | 常にタブUIを表示 |
defaultProfile | PowerShellのguid | デフォルトプロファイルを指定(profiles内のguid) |
initialCols | 120 | ウインドウサイズの幅 |
initialRows | 30 | ウインドウサイズの高さ |
requestedTheme | system | テーマの設定 |
showTabsInTitlebar | true | タイトルバー内にタブを表示する |
showTerminalTitleInTitlebar | true | ターミナルタイトルをタブバーに表示する |
tabWidthMode | equal | タブバーのタイトル幅 |
snapToGridOnResize | false | ウインドウリサイズ時の動き |
wordDelimiters | 設定ファイルを参照 | ダブルクリックで文字選択する際の区切り文字 |
次に「”profiles:{}”」、「”schemes:{}”」で設定できる設定項目を紹介する。「”keybindings:{}”」については、先ほどと同様だ。
項目 | PowerShellの初期値 | 内容 |
---|---|---|
guid | 設定ファイルを参照 | profilesのユニークIDを定義 |
name | Windows PowerShell | ターミナル名 |
commandLine | powershell.exe | ターミナルの実行ファイル |
hidden | false | プロファイルの設定を隠す |
startingDirectory | %USERPROFILE% | 初期ディレクトリ |
closeOnExit | graceful | 終了時のプロファイルの挙動 |
colorScheme | Campbell Powershell | カラースキーマ。schmesで定義 |
cursorColor | #FFFFFF | カーソルのカラー |
cursorShape | bar | カーソルの形状 |
fontFace | Consolas | 使用するフォント |
fontSize | 12 | フォントサイズ |
historySize | 9001 | 履歴サイズ |
icon | 設定ファイルを参照 | 使用するアイコン |
padding | 8,8,8,8 | パディング |
snapOnInput | true | コマンド入力時のウィンドウスクロールの挙動 |
useAcrylic | false | ウインドウの透過 |
項目 | PowerShellの初期値 | 内容 |
---|---|---|
name | Campbell Powershell | スキーマ名称 |
foreground | #CCCCCC | 前景色 |
background | #012456 | 背景色 |
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 | 明るい白 |
このように、各項目ごとにさまざまな設定が用意されている。設定できる項目については、Windows TerminalのGithubにドキュメント「Profiles.json Documentation」が用意されている。このドキュメントは執筆時現在のWindows Terminal v0.8.10261の設定項目であり、バージョンによって設定項目や初期値が変わる可能性がある。Windows Terminalのアップデートを行った際は、Githubで対象のバージョンの設定ドキュメントを確認しておくといいだろう。
では、実際にテキストエディタでprofiles.jsonを編集してみよう。Windows Terminalは設定ファイルを書き換えて保存すると、設定項目にもよるが即座に反映されるようになっている。一例として、ここではフォントサイズを変更してみる。
Windows TerminalでPowershellを開いた状態で、次のようにprofiles.json内のprofilesにあるPowerShellの設定内に「”fontSize”: 10」の1行を追加して保存してみよう。PowerShellのフォントサイズが設定ファイルの保存とともにすぐに変更されることがわかるはずだ。
なお、Windows TerminalはUbuntuなどのWSL環境がインストールされている場合、自動的に検出してprofiles.jsonの「”profiles:{}”」内に最低限の設定を書き込むという親切な設計となっている。WSL環境をWindowsにインストール後、すぐにWindows Terminalで利用/カスタマイズできるようにしているわけだ。
設定ファイルの編集には「Visual Studio Code」
今回、Windows Terminalの設定について紹介してきた。すでにお気付きの方もいるだろうが、本稿では設定ファイルの編集にテキストエディタとしてメモ帳ではなく「Visual Studio Code」を利用している。
Visual Studio CodeはMicrosoftが開発しているマルチプラットフォーム対応のオープンソースエディタだ。Microsoft主導で開発しているため、Windowsとの親和性が高く、さまざまなプログラミング言語に対応しており、JSONの編集にも適している。設定ファイルの編集はメモ帳でも行えるが、使用してもらえばわかると思うがJSON形式である設定ファイルを編集するのに便利なツールになっているので、Windows Terminalをカスタマイズする際はぜひ使ってみてほしい。
Windows Terminalがテキストベースの設定ファイルの編集による設定方法となっているのは、単純にまだWindows Terminalがプレビュー版であり、開発が設定ダイアログまで進んでいないという可能性はある。将来は他のGUIアプリケーションと同じように設定ダイアログが用意されるかもしれないが、現状は本稿で説明したようにJSONファイルを編集するかたちとなっている。
設定ダイアログに慣れた方は少し尻込みしてしまうかもしれないが、ドキュメントの設定項目を参考に設定ファイルを編集するだけなので、そう難しいものではないと思う。せっかくWindows Terminalを使うのであれば、設定ファイルを編集して自分好みのターミナルを手に入れてみてはいかがだろうか。
次回はこの設定ファイルについてもう少し掘り下げ、自分好みのWindows Terminalを手にするための手助けとなるようなカスタマイズを紹介したい。