今回は、「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を利用してWindows Terminalの起動の挙動を操作できる機能拡張が、バージョン0.9から導入された。
Windows Terminal上のPowershellやcmdでもwt.exeを実行できるようになっている。コマンドプロンプトで「wt」と入力して実行すると検索メニューからwt.exeを実行した時と同様にWindows Terminalが別ウインドウで起動するだろう。
試しに次のように実行してみよう。
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をつけて実行すれば対象のサブコマンドのヘルプが表示されるようにもなっている。
wtコマンドを使ってWindows Terminalを起動
それでは、実際にwtコマンドを使っていくつかのタブやペインがすでにあるWindows Terminalを立ち上げてみよう。Windows TerminalのPowerShellで次のように実行してみていただきたい。
実行すると次のような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:'
Powershellの起動後に「split-pane」の「-V」で左右分割してコマンドプロンプトを起動し、さらにそのコマンドプロンプトのペインを分割してUbuntuを起動している。
実行例の最初の「split-pane」で分割に関するオプションを明示的に指定しない場合は、デフォルトでは左右に分割されるようになっている。さらに、次の「split-pane」でも明示的に指定しない場合はその前の「spit-pane」とは逆の分割が行われる。
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”は実行ファイルなので、次のようにショートカットを用意して利用することも可能だ。また、スクリプトを作成しておいて、そこから起動させてもよい。
UNIX文化を感じる新機能
wtコマンド及びそのサブコマンドによるWindows Terminalの起動制御は、LinuxなどのUNIX環境では当たり前のコマンドによるアプリケーションの制御に近いものではないかと思う。この辺りはほかのWindows系アプリケーションにはなかなかない、興味深い新機能と言えるのではないだろうか。
wtコマンドについては公式にドキュメントが公開されているので、そちらも参考にしていただきたい。このドキュメントはv0.9.433.0のものとなっており、バージョンごとに機能に変更が加えられている場合もあるので、使用対象のバージョンのドキュメントに目を通しておくといいだろう。