このエントリは2021/09/19現在の情報を基にしています。将来の機能追加により、記載内容との齟齬が発生する可能性があります(初版は2019/06/26、2021/01/21、2021/09/19更新)。
Windows TerminalとWSL2を組み合わせて利用する場合の備忘録。以下の内容はWindows Terminal 1.10.2383.0をベースにしている。

Windows Terminalの【設定】をクリックすると、2021/09/19現在、settings.jsonファイルがGUI形式で開かれる。このsettings.jsonは以下の場所に存在する。
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
Windows Terminalのメニューの並びを変更する
Windows Terminalのメニューの並びは、settings.json内のprofiles要素中のlistの内の順番に一致するため、ubuntuを先頭に配置したい場合には、ubuntuの部分を配列の先頭に移動する。上記スクリーンショットのメニューの順番(Windows PowerShell > コマンドプロンプト > PowerShell 7.1.0 > Azure Cloud Shell > Ubuntu)は以下の設定で実現している。
{
......,
"profiles":
{
"defaults":
{
// Put settings here that you want to apply to all profiles.
},
"list":
[
{
// Make changes here to the powershell.exe profile.
"guid": "{Windows PowerShellのGUID}",
"name": "Windows PowerShell",
"fontFace": "Cascadia Code PL",
"commandline": "powershell.exe",
"hidden": false
},
{
// Make changes here to the cmd.exe profile.
"guid": "{cmd.exeのGUID}",
"name": "コマンド プロンプト",
"fontFace": "Cascadia Code PL",
"commandline": "cmd.exe",
"hidden": false
},
{
"guid": "{PowerShell 7.1のGUID}",
"hidden": false,
"name": "PowerShell 7.1.0",
"fontFace": "Cascadia Code PL",
"source": "Windows.Terminal.PowershellCore"
},
{
"acrylicOpacity" : 0.6,
"closeOnExit" : false,
"colorScheme" : "Vintage",
"commandline" : "Azure",
"connectionType" : "{接続タイプのGUID}",
"cursorColor" : "#FFFFFF",
"cursorShape" : "bar",
"fontFace" : "Cascadia Code PL",
"guid" : "{Azure Cloud ShellのGUID}",
"historySize" : 9001,
"icon" : "ms-appx:///ProfileIcons/xxxxxx.png",
"name" : "Azure Cloud Shell",
"padding" : "0, 0, 0, 0",
"snapOnInput" : true,
"startingDirectory" : "%USERPROFILE%",
"useAcrylic" : true
},
{
"guid": "{WSL2のGUID}",
"hidden": false,
"acrylicOpacity": 0.5,
"colorScheme": "Solarized Dark",
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "//wsl$/Ubuntu/home/logico_jp",
"fontFace": "Cascadia Code PL"
}
]
},
......
}
デフォルトのTerminalを変更する
自環境の場合、デフォルトでPowerShell Coreが起動するようになっていたが、これをubuntuにする場合、defaultProfileにubuntuのGUIDを設定する。このdefaultProfileはsettings.jsonの11行目あたりにあるのですぐわかるはず。以下の例では、ubuntuのGUIDが22222222-3838-5115-0940-1234567890abであるものとして、defaultProfileに22222222-3838-5115-0940-1234567890abを指定している。
{
"defaultProfile" : "{22222222-3838-5115-0940-1234567890ab}",
...
},
"profiles" :
{
"defaults": {....},
"list":
[
{
...,
"name" : "Ubuntu",
"guid" : "{22222222-3838-5115-0940-1234567890ab}",
...
},
{ ... }
]
},
"schemes" :
[...]
}
Windows Terminalを開いたときにWSL2 ubuntuのホームディレクトリを開くようにする
このためには、ubuntuのprofileに startingDirectory を追加し、”//wsl$/Ubuntu/{ホームディレクトリのFull Path}” と設定する。この startingDirectory はPowerShell、cmdにはデフォルトで存在する要素(デフォルト値はいずれも %USERPROFILE%)だが、WSL2 環境のprofileには設定されていない。以下はその設定例。
{
"globals" : {...},
"profiles" :
[
{
...,
"name" : "Ubuntu",
"startingDirectory":"//wsl$/Ubuntu/home/logico_jp",
...
},
{ ... }
],
......
}
背景を透過的にする
各profileのuseAcrylicをtrueにした上で、不透明度を表すacrylicOpacityを0から1までの間で設定する。自環境の場合、デフォルトではcmd以外はuseAcrylicがfalseで、acrylicOpacityはcmdは0.75、それ以外は0.5が設定されていた。
WindowsからWSL2環境のファイルにアクセスする
WSLでは以下のパスでrootにアクセスできた。以下はのubuntu 18.04の例。
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs
しかし、WSL2はVHDファイルでホストされているため、rootfsというディレクトリが存在しない。
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
そのため、以下のようにUNCを使ってアクセスするしかない。
¥¥wsl$¥Ubuntu¥{Ubuntuでのパス}
なお、Windows 11のPreviewでは、以下のようにアクセスするよう(2021/09/19現在)。
¥¥wsl.localhost¥Ubuntu¥{Ubuntuでのパス}