今回は、「wt.exe」とその引数を利用したWindows Terminalの操作方法を紹介する。この機能はバージョン0.9より追加されており、wt.exeを利用してWindows Terminalの起動を制御するというユニークなものだ。ぜひ覚えて利用してみてほしい。

wt.exeとは

実はWindows Terminalには、実行ファイルであるWindowsTerminal.exeのほかにwt.exeというエイリアス実行コマンドが用意されている。Windowsの検索メニューで「wt」と入力すると、検索結果にwt.exeが出てくるので試してみていただきたい。Windows Terminalが立ち上がるはずだ。

検索メニューからwt.exeを探して実行

このwt.exeを利用してWindows Terminalの起動の挙動を操作できる機能拡張が、バージョン0.9から導入された。

Windows Terminal上のPowershellやcmdでもwt.exeを実行できるようになっている。コマンドプロンプトで「wt」と入力して実行すると検索メニューからwt.exeを実行した時と同様にWindows Terminalが別ウインドウで起動するだろう。

試しに次のように実行してみよう。

wtコマンドのヘルプ画面

wtコマンドに「-h」または「—help,-?,/?」をオプションとして指定すれば、wt.exeのヘルプ画面が表示される。ヘルプをご覧いただけばわかると思うが、wtコマンドにはサブコマンドとサブコマンドごとの引数が用意されており、これらを組み合わせて利用することで新たなWindows Terminalの起動とそれに付随したタブやペインを立ち上げられるようになっている。

サブコマンド名 コマンドの説明 引数名 引数の説明
new-tab 新規タブを開く ターミナルパラメータ ターミナルパラメータの表を参照
split-pane 新規ペインを開く -H,—horizontal 新規ペインを水平方向に分割して開く
同上 同上 -V,—vertical 新規ペインを垂直に分割して開く
同上 同上 ターミナルパラメータ ターミナルパラメータの表を参照
focus-tab 指定したタブをフォーカス -t,—target tab-index インデックスに指定したタブにフォーカスを移動
同上 同上 -n,—next 次のタブにフォーカスを移動
同上 同上 -p,—previous 前のタブにフォーカスを移動
ターミナルパラメータ 説明
-p,—profile 設定ファイル内のプロファイル内のnameまたはguidの値を指定
-d,—startingDirectory 設定ファイル内のStarting-directoryをオーバーライド
commandline -pのプロファイルまたはdefaultProfileのcommandlineをオーバーライド

各サブコマンドは次のようにwtにオプションとして指定し、その後に-hをつけて実行すれば対象のサブコマンドのヘルプが表示されるようにもなっている。

サブコマンドsplit-paneのヘルプ画面

wtコマンドを使ってWindows Terminalを起動

それでは、実際にwtコマンドを使っていくつかのタブやペインがすでにあるWindows Terminalを立ち上げてみよう。Windows TerminalのPowerShellで次のように実行してみていただきたい。

wtコマンドを使ってWindows Terminalを新規起動

実行すると次のようなWindows Terminalが起動するはずだ。

カスタマイズされたWindows Terminalが立ち上がる

サブコマンドとして「split-pane」を指定し、「-H」で水平にペインを分割して「-p」でプロファイルを、「-d」でスタートディレクトリを指定している。プロファイルには設定ファイルの各プロファイル内で設定している「name」の値か「guid」の値を指定するようになっている。

また、ここでは設定ファイル内で「defaultprofile」をPowerShellにしているため、Powershellがまず起動してペインが分割され、「-p」で指定したWSL環境のUbuntuが起動している。

wtコマンドでは、「;」を使うことでさらに複数のサブコマンドを指定して実行できるようになっている。例えば、次のようにstartコマンドレットでwtを実行することも可能だ。 start wt ‘split-pane -V -p cmd ; split-pane -p Ubuntu -d C:'

最初から複数のペインを持つWindows Terminalが起動

Powershellの起動後に「split-pane」の「-V」で左右分割してコマンドプロンプトを起動し、さらにそのコマンドプロンプトのペインを分割してUbuntuを起動している。

実行例の最初の「split-pane」で分割に関するオプションを明示的に指定しない場合は、デフォルトでは左右に分割されるようになっている。さらに、次の「split-pane」でも明示的に指定しない場合はその前の「spit-pane」とは逆の分割が行われる。

PowerShellから「;」を使ってwtに複数のサブコマンドを追加して実行する場合、そのまま利用すると「;」までは実行されるが、その後に記述したサブコマンドは動作せずに次のようにエラーとなってしまう。

Powershellでwtで「;」を利用する際は注意が必要

エラーにならないようにするには、上記のように「Start-Process」を利用するか、次のようにシングルクォートやグレイブアクセント、「—%」などを利用して実行する必要がある。

◆「;」をシングルクォートで囲んで実行

wt split-pane -V -p cmd ';' split-pane -p Ubuntu -d C:\

◆「;」の前にグレイブアクセントを付けて実行

wt split-pane -V -p cmd `; split-pane -p Ubuntu -d C:\

◆wtに「—%」を付けて実行

wt --% split-pane -V -p cmd ; split-pane -p Ubuntu -d C:\

ここまでの例ではwtをコマンドとして利用してWindows Terminalを起動させているが、”%USERPROFILE%\AppData\Local\Microsoft\WindowsApps\wt.exe”は実行ファイルなので、次のようにショートカットを用意して利用することも可能だ。また、スクリプトを作成しておいて、そこから起動させてもよい。

ショートカットでwt.exeを利用

UNIX文化を感じる新機能

wtコマンド及びそのサブコマンドによるWindows Terminalの起動制御は、LinuxなどのUNIX環境では当たり前のコマンドによるアプリケーションの制御に近いものではないかと思う。この辺りはほかのWindows系アプリケーションにはなかなかない、興味深い新機能と言えるのではないだろうか。

wtコマンドについては公式にドキュメントが公開されているので、そちらも参考にしていただきたい。このドキュメントはv0.9.433.0のものとなっており、バージョンごとに機能に変更が加えられている場合もあるので、使用対象のバージョンのドキュメントに目を通しておくといいだろう。

参考資料