このページの本文へ

前へ 1 2 次へ

Windows Info 第214回

機能的にはほぼ完成されたWindows 10の新コンソール、Windows Terminal v0.9

2020年03月08日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 2月にWindows Terminalのプレビュー版、v0.9.433.0(以下、v0.9)が公開された。今回の改良点ではコマンドラインが実装され、ここからWindows Terminalの挙動を制御できるようになった。これにより、エクスプローラーに装備されている「ここでPowerShellを開く」といったコンテキストメニューの登録や、標準以外のプロファイルで起動するショートカットなどをスタートメニューやタスクバーに登録できるようになった。

 とは言え、Windows Terminalは、まだプレビュー版である。現時点でも、公開されているドキュメントや資料などと挙動が違う部分などがある。Ver.1.0の完成は今年4月を予定しているが、今回のv0.9でほぼ完成版と同じ仕様が実装され、以後は大きな機能追加はなく、バグフィックスや品質向上がメインになるようだ。

Windows Terminal v0.9では、コマンドラインオプションやファイルのドラッグ&ドロップなどがサポートされた。コマンドラインで--helpオプションを指定するとGUIでヘルプを表示する

Windows Terminal v0.9に実装された機能

 v0.9には、前述のコマンドラインのほかに以下の機能が搭載されている。

・PowerShell Coreのインストールを検出し、プロファイルを自動登録
・ファイルのドラッグ&ドロップ
・confirmCloseAllTabsプロパティ

 「PowerShell Core」は、簡単に言えばPowerShellのオープンソース版。Windowsに標準添付されているPowerShellは、現行のVer.5.1で終了し、以後は、.NET CoreベースのPowerShell Coreへと移行しつつある。現在は、PowerShell Core Ver.7.0が最新版である。

 こうしたマイクロソフトの動きに合わせ、Windows TerminalでもPowerShell Coreのサポートが開始された。Windows Terminalでは、PowerShell Core版のインストールを検出し、プロファイルを自動登録する。

 「ファイルのドラッグ&ドロップ」は、コマンドラインに対して、ファイルパスを標準入力から引き渡すもの。これにより、コマンドでファイルパスを指定する場合、現物のファイルやフォルダーを直接Windows Terminalウィンドウにドラッグ&ドロップすればよくなった。

 面倒ではあるが、コマンドの中には、ファイルパスの補完やブラウズ入力をサポートしていないものも多く、パスを先頭から手入力しなければならないこともある。なので、ファイルパスを間違いなく渡すことができるドラッグ&ドロップは、確実な方法といえる。

 「confirmCloseAllTabs」は、Windows Terminalのウィンドウを終了ボタンなどで閉じるとき、確認するかどうかを指定するもの。これをTrueとしておくと、間違って全部のタブを閉じてしまうことを防げる。従来のコンソールウィンドウは、1枚のウィンドウが1つのコンソールであったため、比較的気軽にウィンドウを閉じることができた。しかし、Windows Terminalは複数のタブで複数のシェルが同時に起動しているため、ウィンドウを閉じるとこれらもすべて終了させることができてしまう。

2系統のコマンドライン書式

 wt.exeは、大きく分けて、オンラインヘルプオプションとサブコマンドの2系統のコマンドライン書式を持つ。

グレーの部分は仕様にはあるが、v0.9では未実装

 前者は、いわゆるヘルプ表示で、--helpや/?といった引数を指定することでコマンドラインオプションを表示する。ただし、コマンドラインから起動しても、表示はメッセージボックスウィンドウでGUIを使った表示となる(記事冒頭写真参照)。また、--helpなどのオプションに続けてサブコマンドを指定すると、サブコマンドのヘルプを表示する。

wt.exeに--helpオプションの引数としてサブコマンド名を付けるとサブコマンドのヘルプを表示できる

 サブコマンドは、「新規タブ」「タブの選択」「ペイン分割」の3つのサブコマンドからなり、Windows Terminalの起動を制御する。サブコマンドを使うことで、複数タブを表示し、タブをペインに分割した状態でWindows Terminalを起動することが可能になる。

 Windows Terminalでは、起動するシェルは、原則Profileで指定するが、コマンドラインからは、Profile指定のほか、起動プログラム(シェルプログラム)や起動時のディレクトリなどの指定が可能になっている。背景カラーなど細かい指定が必要なら、Windows Terminalの設定にプロファイルとして登録し、起動時のコマンドラインからそのプロファイルを指定すればよい。

 サブコマンドには、

new-tab:タブの作成
focus-tab:タブの選択
split-pane:タブの分割

の3つがある。new-tabで起動するタブを指定する。このとき、登録済みプロファイルを指定したり、起動ディレクトリ、起動コマンドなどを指定できる。

新しくタブを作るnew-tabサブコマンド

 new-tabは、新しくタブを作るサブコマンドだ。Windows Terminalは、最低でも1つはタブが必要であるため、引数を指定しないwt.exeは、このnew-tabサブコマンドが省略されていると仮定されている。オプションとしては、「--profile」、「--startingDirectory」、「commandline」の3つがある。--profileオプションは、profiles.jsonに登録してあるプロファイルをGUIDまたはNameで指定する。また、省略形として「-p」が利用できる。

 --startingDirectoryオプションは、起動ディレクトリを指定するもの。省略形として「-d」が利用可能だ。なお、他のオプションでもそうだが、wt.exeを使うコマンドラインからの起動は、そのときのコマンドラインプロセッサ(シェル)がコマンドラインを解釈してAPIを使ってwt.exeを起動する。このため、パスや¥の扱いなどについては、コマンドラインプロセッサのスタイルに従う必要がある。特にcmd.exeでは、ダブルクオートの扱いが微妙なので複雑な指定をする場合には注意が必要だ。

 commandlineオプションは、起動するプログラムを指定する。これは、プロファイルのcommandlineプロパティを上書きするため、--profileでプロパティを指定したときにも指定でき、かつ、プロファイルのcommnadlineプロパティを置き換えることが可能なコマンドラインになっている必要がある。

 たとえば、cmd.exeを使う場合には、/kオプションなどを含めて完全な起動コマンドを指定する必要がある。また、commandlineオプションは、指定に必然的にスペースを含むため、1つのnew-tabコマンドの指定は、必ずセミコロン(;)で区切る必要がある。このセミコロンはcommandlineを指定しない場合でも、次のサブコマンドを指定するときに必要である。

 コマンドラインオプションは、すべて、profiles.jsonに対するオーバーライド(上書き)指定として認識される。このため、プロファイル指定と起動ディレクトリを同時にすると、profiles.json側のプロファイルのうちstartingDirectoryプロパティが上書きされる。

 逆にコマンドラインで指定しなかった(あるいは指定方法がない)プロパティ、たとえば背景色であるbackgroundプロパティは、プロファイルで有効なものが使われる。Windows Terminalは、このあたりの設定を階層上に指定でき、もっとも優先度の高いものが設定値となる。  こうした指定は、ウェブページのCSS(Cascading Style Sheet)でも採用されており、一般に「Cascading」と呼ばれることがある。Cascadeは、「階段状になった滝」のことで動詞となるcascadeは、「滝のようになって落ちる/滝になる」の意味だ。複数の設定値が重なりあり、もっとも手前(優先度が高い)ものが有効になるという状態をこのように言う。Windows Terminalの開発コード名である「Cascadia」はこのCascadingに由来するという。

 focus-tabサブコマンドは、new-tabで作成したタブのうち1つを選択するものだ。Windows Terminalは、常にどれか1つのタブが表示された状態であり、タブが作られると必ずそのタブがフォーカスを得た状態になる。focus-tabはこれを変更するもので、複数のタブを作成した後、そのどれかを指定する。オプションとしては、--targetオプションでタブのインデックス(順番)を指定するか、--next、--previousで現在のタブを起点にした相対指定をするかがある。

 split-paneサブコマンドは、現在のタブをpaneに分割するもの。new-tabと同じオプションが使えるほか、分割するpaneを指定する--target(v0.9.433.0では指定するとエラーになるようだ)、縦分割、横分割を指定する「-V」「-H」が指定できる。なお、「-V」「-H」を指定しない場合、長辺を2分割するauto分割指定がなされたと仮定される。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン