Windows Terminal v1.6正式版が公開されると同時に、GUIによる設定が可能になったv1.7がプレビュー版として提供された。今回は、v1.6までに追加された新機能と、プレビュー版v1.7でサポートされたGUIによる設定ページの概要をそれぞれ紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Windows Terminal」は、Microsoftがオープンソースとして開発中のターミナルエミュレーター(コンソールホスト)である。2021年3月に入り、Windows Terminal v1.6(以下、正式版v1.6と表記)が公開され、同時にプレビュー版v1.7(以後プレビュー版v1.7と表記)の配布が開始された。本稿では、「ついに完成「『Windows Terminal』の機能と使い方まとめ」で紹介したv1.0以降から正式版v1.6までの新機能と、GUIによる設定ページなど新機能が搭載されたプレビュー版v1.7の新機能について解説していく。
Windows Terminalは、2020年5月に正式版「v1.0.1401.0」がMicrosoft Storeで公開され、一般向けの提供が開始された。Windows Terminalの概要などについては、Windows 10 The Latest「ついに完成『Windows Terminal』の機能と使い方まとめ」を参照してほしい。
その後v1.1〜v1.5とアップデートを行い、2021年3月2日に正式版v1.6が公開されている。同時にプレビュー版v1.7の配布も開始された。プレビュー版は、Microsoft Store経由で入手可能だ。また、Windows Terminalのソースコードを公開しているGitHubでもmsixパッケージ形式として入手できる。
プレビュー版をMicrosoft Storeで入手すると、自動的にアップデートされるため、手間が掛からないというメリットがある。反面、評価している最中であっても自動アップデートされてしまうというデメリットもある。
プレビュー版と正式版は1つのマシンに共存可能であるため、日常的な利用には、正式版を使い、新機能などを評価するためにプレビュー版を入れておくことも可能だ。Microsoft Storeからプレビュー版をインストールしていても、GitHubから過去バージョンのmsix版をダウンロードしてインストールすることも可能なので、必要に応じて利用するといいだろう。
GitHubからインストールする場合、以下のWindows Terminalのバイナリ公開ページから行う。
このページのトップにあるのが最新のプレビュー版である(タイトルにも「Preview」と記されている)。新機能(Features)や変更点(Changes)、不具合修正(Bug Fixes)などの説明に続いて、「Assets」という項目があるので、これをクリックすると、msixパッケージ(msixbundleファイル)とソースコードのzipアーカイブなどのリンクが表示される。先頭のmsixパッケージのリンクをクリックすると、ダウンロードが始まる。
ダウンロードしたmsixパッケージを実行すると、プレビュー版をインストールできる。
正式版v1.1からv1.6に追加された主な機能には、以下のようなものがある(v1.0までの機能に関しては「ついに完成「『Windows Terminal』の機能と使い方まとめ」を参考にしてほしい)。
以下では、主要な新機能について解説する。
「コマンドパレット」は、Windows Terminalが持つさまざまな「Action(アクション)」を直接実行する機能だ。標準では、[Ctrl]+[Shift]+[P]キーでコマンドパレットが開く。
Windows Terminalは、キーボードショートカットなどに割り当て可能なさまざまな機能をActionとして持っている。これまでは、このActionは、キーボードに割り当てて利用していたが、v1.5からコマンドパレットでも起動できるようになった。
一部のActionには、右側に「>」が表示され、パラメーターもリストで指定可能になっている。例えば、[ウィンドウを分割します]を選ぶと、プロファイルのリストが表示される。
Windows Terminalで利用するさまざまな「シェル」や「コマンドインタープリタ」では、さまざまなキー割り当てを既に持っているものが少なくない。例えば、Windows 10標準のcmd.exe(コマンドプロンプト)では、[F7]キーでヒストリ機能が利用できるといったように、既にキー割り当てが行われている。
Windows Terminalのキー割り当ては、こうしたシェルやコマンドインタープリタのキー割り当てと衝突しないように行う必要がある。しかし、Windows Terminalは、cmd.exe、PowerShell.exe(Ver.5およびVer.7)、bash(WSL)、Azure Cloud Shellなど多数のプロファイルに対応しており、これらが利用する全てのプロファイルで空いているキーを探すのは難しい。その点、コマンドパレットを使えば、キー割り当てを行うことなく、Actionが実行できる。
Windows Terminalを日本語環境で利用すると、コマンドパレットに入力するActionは、日本語の機能名として入れる必要がある。コマンドパレットでは、入力した文字から関連するActionをインクリメント検索して表示する機能がある。「タブ」と入れると、関連するAction(の日本語翻訳)一覧が表示される。ただし、この日本語化については、Windows Terminalが手本としたVisual Studio Code(VS Code)のように翻訳は行わず、オリジナルの英単語のままにしてほしいという利用者の声もある。今後仕様が変更される可能性もありそうだ。
例えば、正式版v1.5で利用可能になった新規のActionとして、タブの色を設定するコントロールを表示する「openTabColorPicker」というものがある。キー割り当てなどでは、この名称をそのまま使わなければならない。一方、日本語環境でコマンドパレットから呼び出す場合には、settings.jsonファイルの「openTabColorPicker」で設定可能なタブの色の設定は、日本語翻訳である[タブの色を設定する]を選択する(「タブ色」と入力すれば、コマンドパレットは「タブの色を設定する」を候補として表示してくれる)。
その他、コマンドパレットには、「Command Line Mode」と呼ばれる機能があり、Windows Terminalの起動オプションを使って、新規タブやペインへの分割なども実行することが可能だ。Command Line Modeを使うには、[Ctrl]+[Shift]+[P]キーでコマンドパレットを開いた後、入力欄の先頭にある「>」をバックスペースで削除してから、起動オプションを入力する。
ここに新規のタブを開く起動オプション「new-tab」と入力すると、Windows Terminalに新しいタブが開く。
また、ここに「コマンドプロンプト」プロファイルを指定して起動する「-p "コマンド プロンプト"」を「Command Line Mode」で入力すると、新規タブを「コマンド プロンプト」プロファイルで開く(プロファイルや起動オプションに関しては、Windows 10 The Latest「ついに完成『Windows Terminal』の機能と使い方まとめ」を参照のこと)。
Windows Terminalは、タブで複数のセッションを開き、1つのウィンドウに表示できるというのが特徴だ。従来のコンソール(コマンドプロンプトやPowerShellなど)では、セッションごとに個別のウィンドウを開く必要があった。開発や管理作業などで多数のウィンドウを開くと、ウィンドウが行方不明になったり、間違ったウィンドウで作業してしまったりすることもあった。
Windows Terminalでは、全ての端末セッションをタブでまとめることで行方不明などを防ぐことができる。さらに、タブの背景色やタイトルテキスト、表示位置などを自由に操作できるようになり、タブの区別が容易になっている。
タブ上で右クリックすると、コンテキストメニューが表示され、ここから「タブ背景色の指定」「タブタイトルの変更」「タブを閉じる」操作が可能になる。なお、これらは、全てActionに対応しており、キー割り当てによる実行や前述のコマンドパレットからの実行も可能だ。
また、[Ctrl]+[Tab]/[Ctrl]+[Shift]+[Tab]キーでタブを順次切り替えるときに「Tab Switcher」が表示され、全てのタブをリストとして表示できるようになった。
このTab Switcherは、[Ctrl]キーまたは[Shift]キーを押している間は表示し続ける([Tab]キーだけ離すことが可能)。このとき、上下カーソルキー、[Tab]キーの再打鍵、マウスでタブ名を選択することも可能だ。「settings.json」ファイルでの設定により、このときのタブの選択順を、タブの並び順だけでなく、利用した順にすることも可能だ。複数のタブを渡り歩いて作業する際、直前に開いていたタブへすぐに戻ることもできる。
ソフトウェア開発やシステム管理作業では、多数のタブを開く可能性があり、タブを区別することは重要な問題となる。このとき、タブの色やタイトルを変更することで区別が容易になる。なお、タブの位置はマウスのドラッグ&ドロップで移動が可能だ(v1.0からの機能)。
多数のタブを表示させることを想定し、アクティブなタブ以外のタブの表示幅を「compact(アイコンのみの最小幅)」にする機能も追加された。正式版v1.0では、「equal(全て同じ幅)」か「titleLength(タイトル文字数に応じた幅)」に設定できたが、「compact」はサポートしていなかった。「compact」をサポートしたことで、多数のタブを開く場合に分かりやすいタブ表示が行えるようになった。
正式版v1.5で、[Ctrl]キーを押しながらURLをクリックすると、該当のURLをデフォルトのWebブラウザで開く機能が搭載された。クリック可能なURLの上にマウスカーソルを重ねると、[Ctrl]キー+クリックでURLを開けることがツールチップで表示される。
この機能は、アプリケーションがエスケープシーケンスを使ってクリック可能なURLを表示するものと、Windows TerminalがURLと判定できるものを自動的にクリック可能なURLとして表示するものの2種類に対応している。
前者は、アプリケーションがユーザーに情報を提供するために必要なURLを提示するもので、アプリケーション側がエスケープシーケンスを使って明示的にURLを表示させる必要がある。例えば、Windows TerminalのPowerShellプロファイルで以下のコマンドレットを実行すれば、「This is link」の文字列にURLをリンクさせることができる。このようにURLに対して表示するサイトの名称などを付けることが可能だ。
write-host "`n`n$([char]0x1B)]8;;https://www.atmarkit.co.jp/$([char]0x1B)\\This is link$([char]0x1B)]8;;$([char]0x1B)\\`n`n"
これに対して、後者は、Windows Terminalがコンソール中に表示されているURLと判断できるものを自動的にクリック可能なURLとするものだ。こちらはアプリケーションの操作は不要だが、URLそのままの表示になる他、URL付近の表現などによっては、Windows TerminalがURLを正しく判別できず、誤ったリンクを付ける可能性もある。こちらは、テキストファイルなどに記載されているURLを簡単に扱うためのものだ。
正式版v1.6では、GPUのシェーダープログラムを使って、CPUに負荷をかけることなく、複雑な背景描画を行わせることができるようになった。これを使うと、背景のアニメーションや、表示フォントに対する加工などが可能になる。なお、この機能は、昔のCRT画面のターミナルのような文字を表示する「experimental.retroTerminalEffect」(レトロターミナル効果)のベースになったものだ。このため、正式版v1.6では、このレトロターミナル効果は、デフォルトのシェーダープログラムとして登録されている。
このときに使われるシェーダー言語がDirectXのシェーダー言語であるHLSL(High Level Shading Language)だ。シェーダーとは、GPU内部で表示ビットマップを加工する部分を指し、シェーダー言語とは、プログラマブルシェーダーを制御するコンピュータ言語のことだ。
正式版v1.6では、テキストで書かれたHLSLのソースコードを読み込み、これをコンパイルしてGPUに転送、ウィンドウ内の表示をHLSLで処理して表示させる。処理はGPU側で行われるため、複雑なシェーダープログラムを実行させてもCPU側の負荷はほとんど上がらない。なお、HLSLのコンパイラなどは、DirectXのモジュールとしてWindows OSに付属しているため、シェーダープログラムソース以外に用意するものはない。
このHLSLシェーダーは、プロファイルごとに定義できるため、背景画像のように、実行しているシェルやコマンドインタープリタ別に違う背景を表示できる。
HLSLシェーダーのサンプルプログラムは、GitHubのWindows Terminalのリポジトリにある。
ここにあるシェーダープログラムをローカルファイルに保存する。本来、GitHubは、ローカルにプロジェクト全体をダウンロードするためのものなので、サイト内では、ブラウザの「リンク先を保存」を使うことができない(HTMLページが保存されてしまう)。
このため、シェーダーサンプルのリンクをクリックして開き、シェーダープログラムをマウスで選択してメモ帳に貼り付けて保存するか、GitHubページ内のファイルリスト右上の「Raw」ボタンを押してプログラムをブラウザに表示させて、ブラウザの右クリックメニューで「名前を付けて保存」(Google ChromeまたはMicrosoft Edgeの場合)を使って保存する。
入手したHLSLシェーダーサンプルプログラムを使うには、settings.json内の「Profiles」プロパティ内のDefaultsまたはListプロパティに「experimental.pixelShaderPath」を使ってHLSLシェーダープログラムへのパスを指定する。これで指定したHLSLファイルが自動的にコンパイルされてWindows Terminal内に画像が表示される。
新規に追加されたActionである「toggleShaderEffects」をキーに割り当てることで、シェーダーによる表示処理をオン/オフできる。
次ページでは、正式版v1.6のその他の新機能と、プレビュー版v1.7で評価中のGUI設定ページなどについて解説する。
Copyright© Digital Advantage Corp. All Rights Reserved.