Windows Terminalって?
Windows TerminalはMicrosoftによって開発中の開発された新しいターミナルアプリです。
~~まだPreview版なので不具合もありますが、~~シンプルで使いやすいので少しずつカスタマイズしています。
■2020/06/13更新:v0.11.1121.0版からv1.0.1401.0版に更新しました。
2020/06/13時点で最新のv1.0.1401.0版でも本記事の内容は有効です。
■2020/04/27更新:v0.8.10091.0版からv0.11.1121.0版に更新しました。
2020/04/27時点で最新のv0.11.1121.0版でも本記事の内容は有効です。
設定ファイルの名称がprofiles.json
からsettings.json
にリネームとなった点を修正しました。
■2020/01/16更新:v0.7.3451.0版からv0.8.10091.0版に更新しました。
2020/01/16時点で最新のv0.8.10091.0版でも本記事の内容は有効です。
複数のprofileで共通のシェル設定を指定する新機能について追記しました。
■2020/01/09更新:v0.5.2661.0版からv0.7.3451.0版に更新しました。
2020/01/09時点で最新のv0.7.3451.0版でも本記事の内容は有効です。
settings.jsonを編集しよう!
Windows Terminalはv0.5.2661.0にアップデートしてから、設定ファイルである~~profiles.json
~~settings.json
の内容が大きく変わりました。
以前のバージョンではすべての設定をsettings.json
で管理していましたが、アップデート後は
- 既定の設定である
defaults.json
- 環境に合わせて動的に生成される
Dynamic Profiles
- ユーザ毎の設定である
settings.json
という3つの設定に分かれました。
settings.json
の内容がユーザ毎の設定に限られるので、以前のバージョンよりも設定を管理しやすくなりましたね。
今回は次のカスタマイズをしてみたいと思います。
- Windows Terminal起動時、WSLが開くようにする
- 背景画像の追加/カラースキームを変更して見た目を変える
- フォントを変える
- [2020/01/16追記]複数の
profile
で共通のシェル設定を指定する
そもそもですが、settings.json
は%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
に格納されています。Windows Terminalの[Settings]をクリック、又は「Ctrl+,」ショートカット操作で、既定のエディタで開くことができます。
ちなみに「Alt」キーを押下しながら[Settings]をクリックすると、既定の設定であるdefaults.json
を開くことができます。既定値を確認したいときに便利です。
実際に自分が使用しているsettings.json
はGitHubにて公開しています。
1. Windows Terminal起動時、WSLが開くようにする
// 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": "{2c4de342-38b7-51cf-b940-2309a097f518}", // ★ここにWSLのGUIDを指定★
"profiles":
.
.
Windows Terminalでは、シェル設定をprofiles
という単位で管理しています。このprofiles毎に一意となるIDがGUID
で、例えばWSL(ディストリビューションはUbuntu)の場合は"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}"
となります。
このGUIDを"defaultProfile"
プロパティに指定することで、Windows Terminalを起動した時に対応するシェル:WSLが開くようになります。
ただ、この設定だけだとWSLが開いた際のディレクトリ位置は%USERPROFILE%
となっています。
WSL上のホームディレクトリを初期位置とするには、次の設定をWSL profileにする必要があります。
.
.
{
"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"commandline": "wsl.exe ~ -d Ubuntu" // ★ ~ を付けるのがポイント★
},
.
.
WSL profileはDynamic Profiles
という仕組みで動的に初期値が生成されるようです。"source"
プロパティに指定された値によって、どの初期値を生成するかが決まります。このDynamic Profilesという仕組みは、ランタイム情報を確認してからでないと生成できない初期値(=defaults.jsonには含めづらい動的な初期値)に対応する為に考えられたようです。
参考
Add Dynamic Profile Generators #2603
https://github.com/microsoft/terminal/pull/2603
Dynamic Profilesで生成される"commandline"
プロパティの値は"wsl.exe -d Ubuntu"
(ディストリビューションの部分は環境により変化有)ですが、"wsl.exe ~ -d Ubuntu"
と~
を加えてあげると、起動時にWSL上のホームディレクトリを初期位置としてくれます。
他にも"startingDirectory"
プロパティに"\\wsl$\Ubuntu\home\username"
と指定しても起動時にWSL上のホームディレクトリを初期位置としてくれます。
しかし、usernameを含まないといけないので自宅/職場等 usernameが異なる環境でsettings.jsonを使いまわしたいときに面倒です。
ちなみに"startingDirectory"
プロパティはWindows上でのパスを指定しないといけないので、"~"
と指定したとしても正しく動作しません。
■2020/01/09追記:"commandline"
プロパティの設定について補足
昨年末、本記事を読んでいただいた方から
"commandline": "wsl.exe ~ -d Ubuntu" // ★ ~ を付けるのがポイント★
のチルダが不要で、動きませんでした。Versionが違うせいかもしれません。
という情報をいただきました。
今のところ自分の環境ではチルダが付いていても問題なくWSL上のホームディレクトリが開きますので、検証したバージョンを記載しておきます。
- Windows 10 Pro 1903
- Windows Terminal (Preview) v0.5.2661.0版
- WSL Ubuntu ディストリビューション
又は
- Windows 10 Pro 1909
- Windows Terminal (Preview) v0.7.3451.0版
- WSL Ubuntu ディストリビューション
もしうまくいかない方がいらっしゃったら、実際に自分が使用しているsettings.json
をGitHubで公開しているので、自身のsettings.json
と差分を取ってみるのもいいかもしれません。
2. 背景画像の追加/カラースキームを変更して見た目を変える
Windows Terminalは背景画像も簡単に変更することができます。
.
.
{
"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"backgroundImage": "C:\\Windows\\Web\\Wallpaper\\Windows\\img0.jpg", // ★Windows10のデスクトップ画像を指定★
"backgroundImageOpacity": 0.5, // ★背景画像の透明度を0-1の範囲で指定★
"colorScheme": "One Half Dark", // ★カラースキーム名を指定★
"useAcrylic": false // ★ウィンドウ背後にあるコンテンツが透過するかどうか★
},
.
.
"backgroundImage"
プロパティはその名の通り背景画像に使う画像ファイルを指定します。
"backgroundImageOpacity"
プロパティは指定した背景画像の透明度を指定します。お好みで調整してみましょう。
"colorScheme"
プロパティはdefaults.json
に予め用意されているカラースキーム名、又は自分でsettings.json
に作成したカラースキーム名を指定することで、どのカラースキームを使用するか指定できます。背景画像によって見易い/見難い配色があると思うので、納得がいくまで調整しましょう。
"useAcrylic"
プロパティはWindows Terminalウィンドウの背後に別のウィンドウ等があった場合に透過するような見た目とするか指定できます。以前のバージョンではfalse
でないと背景画像が正しく表示されなかったのですが、今はtrue
でもfalse
でもどちらでも背景画像は表示されます。お好みでいいですが、true
とするのであれば"acrylicOpacity"
プロパティも一緒に調整しましょう。
3. フォントを変える
.
.
{
"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"fontFace": "HackGenNerd Console"
},
.
.
自分は今のところフリーライセンスのプログラミングフォント「白源」を使用させてもらっています。
"fontFace"
プロパティにフォント名を設定すれば設定完了です。
4. [2020/01/16追記]複数のprofile
で共通のシェル設定を指定する
v0.8.10091.0から**Default settings**という機能が追加となっています。WSLやWindows PowerShell、cmd等 複数のprofile
で共通のシェル設定を使用する場合、今までは各profile
毎に設定を記述する必要がありました。
.
.
"profiles":
[
{
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"fontFace": "Cascadia Code", // ★重複★
"fontSize": 14 // ★重複★
},
{
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "cmd",
"commandline": "cmd.exe",
"fontFace": "Cascadia Code", // ★重複★
"fontSize": 14 // ★重複★
},
{
"commandline" : "cmd.exe /k %CMDER_ROOT%\\vendor\\init.bat",
"name" : "cmder",
"startingDirectory" : "%USERPROFILE%",
"fontFace": "Cascadia Code", // ★重複★
"fontSize": 14 // ★重複★
}
],
.
.
これが、Default settings機能を使用すると以下のようにシェル設定が共通化できます。
.
.
"profiles":
{
"defaults": // ★"defaults"に共通のシェル設定を設定する!★
{
"fontFace": "Cascadia Code",
"fontSize": 14
},
"list": // ★従来のprofile毎のシェル設定は"list"に設定する★
[
{
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
},
{
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "cmd",
"commandline": "cmd.exe"
},
{
"commandline" : "cmd.exe /k %CMDER_ROOT%\\vendor\\init.bat",
"name" : "cmder",
"startingDirectory" : "%USERPROFILE%"
}
]
},
.
.
シェル設定の共通化、皆さんもやってみてください!
他にも設定色々!
Settings.json Documentationという設定用ドキュメントがちゃんと用意されているので、他にも設定を探して自分好みのWindows Terminalにカスタマイズしましょう!
自分はまだkeybindingsは一切触っていないので、良い設定がないか考えてみたいと思っています。
注意!
Windows Terminalは2020/04/27時点でPreview版ですので、こちらに書いた設定方法が大きく変わる可能性もあります。ご了承ください。
尚、正式版のリリースは2020/04頃ということです。楽しみ!
祝 正式版リリース!
Windows Terminalは2020/05に正式版がリリースされました!
今後はPreview版と正式版が毎月リリースされるとのことなので、気になる方は両方チェックするといいかと思います!