Microsoftがオープンソースで開発を進めていた新しいターミナルアプリ「Windows Terminal」がついにVer.1.0となり正式リリースとなった。このWindows Terminalの主な機能と使い方をまとめてみた。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftがオープンソースソフトウェアとして開発を進めている「Windows Terminal」の正式リリース版となるVer.1.0が配布された。Microsoftが開催している開発者向けのイベント「Microsoft Build 2020」に合わせて公開されたようだ。
原稿執筆時点で公開されているのは、v1.0.1401.0で、日本時間の2020年5月20日に公開された。既にMicrosoft Storeからダウンロードが可能な他、ソースコートなどが公開されているGitHubからもMSIX形式のパッケージでダウンロード可能となっている。
Windows Terminalでは、これまでもプレビュー版をベースに機能などについて紹介してきたが、今回は正式版をベースに基本的な使い方などをまとめることにする。なお、設定ファイルによるカスタマイズに関しては、複雑な機能なので別記事で解説する予定だ。
Windows OSでは、テキストベースのアプリケーションを「コンソールアプリケーション」と呼び、長らく「conhost.exe」というプログラムが表示するウィンドウが使われてきた。conhost.exeは、古くはWindows 1.01のMS-DOS Executiveにさかのぼり、MS-DOSアプリケーションをWindows OSの中で動作させるために作られたウィンドウアプリケーションがベースである。32bit化やNTカーネルでの動作など、Windows OSの最初から使われてきたプログラムだが、設計が古く、かなり長い間「オマケ」的な扱いで、管理者向けのコマンドなどを実行するためのものだった。
その一方で、PowerShellやWSL(Windows Subsystem for Linux)の登場で、Windows OSでも再びコンソールの重要性が高まってきている。しかし、conhost.exeはこうした新しい環境には追従しにくい機構のため、改良がなかなか進まなかった。
そもそも、IBM PCのディスプレイだったMDAやCGAといったハードウェアのテキストモードをエミュレーションするように作られていたため、文字コードは8bitでコードページにより文字セットを切り替えといった構造だった(日本語は2文字を使って16bitで表示していた)。Windows 10でも改良が続けられたものの、互換性を保ちながらの改良は困難とMicrosoftは判断したのだろう。それで登場したのが「Windows Terminal」だ。
なおconhost.exeは、互換性のため今後も残る。Windows Terminalは、Microsoftの製品ではあるものの、オープンソースによるフリーソフトウェアという位置付けになる。
余談になるが、最近のMicrosoftはWindows OSの標準アプリやアドオンアプリのオープンソース化を進めている。例えば、既に「電卓」アプリはオープン化されているし、Windows 10 The Latest「Windows 10をより使いやすくするMicrosoft製ツール『PowerToys』とは」で紹介している「PowerToys」のようなアドオンアプリもオープンソースで開発が進められている。
おそらく、Windows OSの起動や処理に直接関わらない付属アプリは、最終的には、オープンソース化されてWindows OSから切り離され、Microsoft Storeからユーザーがインストールする方向になるのではないかと思われる。オープンソース化によって、Microsoftが付属アプリの開発やサポートから手を引いてしまうのかと心配になるが、「電卓」アプリもオープンソース化してから機能が追加されるなど、放置されるわけではないようだ。
Windows Terminalも、2020年7月から毎月アップデートすることが明らかにされており、機能強化も期待できる。バグなどの報告や追加してほしい機能などのフィードバックは、GitHubなどを通じても行うことは可能だ。
Windows Terminalのインストールは前述の通り、Microsoft Storeから行える。「Microsoft Store」アプリを起動し、検索ボックスに「Windows Terminal」と入力すれば、「アプリ」欄の先頭に「Windows Terminal」が表示されるはずだ。これをクリックして、インストールを実行すればよい。
Windows Terminalは基本的には、キーボードショートカット(後述)を使って操作するのを原則としている。ただし、タブやウィンドウサイズの変更といった操作や、メニューなど最低限のGUI操作も備える。
以下の画面はWindows Terminalのウィンドウだ。Windows Terminalでは、タブで複数の実行プログラムの出力を切り替えるようになっている。また、1つのタブを複数のペインに分割して、そのそれぞれでプログラムを実行させることも可能だ。
プログラムは、cmd.exeやPowerShellのような「シェル」アプリケーションが想定されているが、基本的にはコンソールアプリケーションであれば、何でも実行できる。
ただし、[スタート]メニューなどからコンソールアプリケーションを直接起動すると、conhost.exeを使ってウィンドウを表示してしまう。このため、Windows Terminalは、自身を使って起動するコンソールアプリケーションをプロファイルと呼ばれる情報として定義する。ここに登録することで、コンソールアプリケーションをWindows Terminal内で起動させることが可能になる。
プロファイルからのコンソールアプリケーション起動は、キーボードショートカット([Ctrl]+[Shift]+[1]〜[9]キー)やコマンドラインから指定できる。また、コマンドラインの性質から、いったんシェルプログラムを起動すれば、そこから他のシェルプログラムを起動することが可能だ。例えば、プロファイルでPowerShellをタブで開き、さらにコマンドラインでwsl.exeを実行すれば、タブ内でLinuxが起動する。
また1つのタブは、キーボードショートカットにより複数のペインに分割できる。ペインも前述のプロファイルに関連付けられており、任意のプロファイルをペイン内で実行することができる。ただし、起動中のWindows Terminalでこれを行うには、キーボードショートカットに割り当ておく必要がある。
後述する起動オプションを使えば、任意のコンソールアプリケーションでペインを開くことは可能だ。ペインは、タブを水平、垂直に分割することができ、開いた後、領域の拡大や縮小が可能だ。これを使うことで、タブを左右に分割して、右側のペインにコマンドのオンラインヘルプを表示させ、これを見ながら左側のペインで実行するといったことが可能になる。
タブは、マウスでドラッグして並び替えることもできる。Windows Terminalには、「前」「次」のタブへ移動するというキーボードショートカットがあるため、並び替えることで、タブ間の移動が楽になる。ただし、現時点では、個別に起動し、別ウィンドウとなったWindows Terminal間でタブを移動させることはできない。
Windows Terminalは設定画面を持たないため、設定を行うにはJSON形式の設定ファイル(形式としてはUTF-8のテキストファイル)を外部のエディタで編集する必要がある。JSONとは、JavaScript Object Notationの略で、もともとはJavaScriptからオブジェクトデータをテキスト型式で入出力するための仕様だった。
しかし、JSONは多くの用途には十分でかつ、XMLのように複雑な仕組みが必要ないため、このところJavaScript以外でも広く使われるようになってきた。ただし、もともとが簡易な利用を想定していたため、注釈を含めることができないなど、一般的に使う仕様としては少々使いにくい面があった。
Windows Terminalでは、「JSON-Schema」と呼ばれる仕様に準拠することにより、この使いにくさをカバーしている。拡張子は「.json」なのだが、このJSON-Schemaに対応したエディタ(Microsoftの「Visual Studio Code」など)があれば、キーワードの補完などの機能が利用できるようになる。もちろん、単なるUTF-8のテキストファイルとしてメモ帳でも編集は可能だ。
なお、JSONは、改行コードについては何も規定していない(入っていなくても文法上構わない)ため、編集するエディタの都合でWindows OS標準の「CR+LF」になってしまってもいい。ただし、Windows Terminalが最初に保存するJSONファイルの行末コードは「LF」のみである。
Windows Terminalのタブの右側にある[v]アイコンをクリックしてドロップダウンメニューを開いて[設定]を選択するか、[Ctrl]+[,(カンマ)]キーを押すと、Windows 10で「.json」ファイルに関連付けられたエディタが起動する(関連付けられたエディタがない場合は、「メモ帳」アプリ)。このとき編集状態になるファイルが「settings.json」で、以下のフォルダに保存されている。
%UserProfile%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
このファイルを編集して保存することでWindows Terminalの設定変更が行える。なお、記述にエラーがあった場合には、Windows Terminal側にそのエラーの表示が出る。
また、settings.jsonに記述できるキーワードなどについては、Microsoft Docs「Windows Terminal Global Settings」[英語]などを参照してほしい。
設定は、変更ができないデフォルト値とsettings.jsonによる上書き設定の大きく2種類ある。デフォルト値は、Windows Terminalのプログラムにハードコードされているため、ユーザーが変更することはできない。
しかし、参照することは可能で、[v]アイコンをクリックして、ドロップダウンメニューを開き、[Alt]キーを押しながら「設定」をクリックする(現時点ではキーボードショートカットでは呼び出せない)。このとき、エディタで開かれるのが「defaults.json」というファイルだ。このファイルを書き換えて保存してもWindows Terminalは読み込まないので注意が必要だ。設定の変更は、全てsettings.json側で行う。default.jsonにある記述と異なる記述を行ってもsettings.jsonの記述のみが有効になるので問題ない。
この「defaults.json」には、Windows Terminalの全ての設定がある。後述するキーボードショートカットのデフォルト割り当てなどを確認するには、この「defaults.json」ファイルで行う。
「settings.json」には、起動するプログラムをプロファイルとして定義する。Windows Terminalでは、「settings.json」に登録したプロファイルをメニューから選択し、キーボードショートカットに割り当てて起動することが可能な他、後述するコマンドラインオプションで指定して起動することもできる。また、この他にも、Windows Terminalの動作を指定する記述を「settings.json」で行うことが可能だ。
{
// Make changes here to the cmd.exe profile
// プロファイル名は"CMD Test"
"name": "CMD Test",
// cmd.exeを起動
"commandline": "cmd.exe",
// フォントはMS明朝
"fontFace": "MS 明朝",
// 起動時のディレクトリはC:\
"startingDirectory": "c:\\",
// フォントサイズは18(ポイント)
"fontSize": 18,
// 背景を半透明(Acrylic)で表示
"useAcrylic": true,
// 文字色は白(#FFFFFF)
"foreground": "#FFFFFF",
// 背景の不透明度は0.7
"acrylicOpacity": 0.7,
// 背景色は、暗い緑(#007F00)
"background": "#007F00",
// 背景用イメージファイルのパス
"backgroundImage": "c:\\temp\\00-WindowsTerminal\\cmdr.png",
// 背景イメージファイルの不透明度は0.5
"backgroundImageOpacity": 0.5,
// プロファイルはメニューに表示
"hidden": false
},
Windows Terminalは原則、キーボードショートカットで操作することになる。Windows Terminal内で動かしているシェルプログラムやコンソールアプリケーションもキー操作が前提なので、これについての違和感はないだろう。Windows Terminal v1.0は、下表のキーボードショートカットをデフォルトとして持っている。
動作 | キー |
---|---|
Windows Terminalウィンドウを閉じる | [Alt]+[F4] |
フルスクリーンモードのオンオフ | [Alt]+[Enter] |
フルスクリーンモードのオンオフ | [F[1][1]] |
メニューを開く | [Ctrl]+[Shift]+[Space] |
設定を開く | [Ctrl]+[,(カンマ)] |
端末バッファー内の検索 | [Ctrl]+[Shift]+[F] |
単一行のコピー | [Ctrl]+[Shift]+[C] |
単一行のコピー | [Ctrl]+[Insert] |
貼り付け | [Ctrl]+[Shift]+[V] |
貼り付け | [Shift]+[Insert] |
コピー(settings.jsonで定義) | [Ctrl]+[C] |
貼り付け(settings.jsonで定義) | [Ctrl]+[V] |
ペインを閉じる | [Ctrl]+[Shift]+[W] |
水平ペイン分割してデフォルトプロファイルを開く | [Alt]+[Shift]+[-(マイナス)] |
垂直ペイン分割してデフォルトプロファイルを開く | [Alt]+[Shift]+[+(プラス)] |
カーソルのあるペインを下に拡大 | [Alt]+[Shift]+[↓] |
カーソルのあるペインを左に拡大 | [Alt]+[Shift]+[←] |
カーソルのあるペインを右に拡大 | [Alt]+[Shift]+[→] |
カーソルのあるペインを上に拡大 | [Alt]+[Shift]+[↑] |
下のペインに移動 | [Alt]+[↓] |
左のペインに移動 | [Alt]+[←] |
右のペインに移動 | [Alt]+[→] |
上のペインに移動 | [Alt]+[↑] |
ペインを自動分割で開く(settings.jsonで定義) | [Alt]+[Shift]+[D] |
1行スクロールダウン | [Ctrl]+[Shift]+[↓] |
1ページスクロールダウン | [Ctrl]+[Shift]+[PgDn] |
1行スクロールアップ | [Ctrl]+[Shift]+[↑] |
1ページスクロールアップ | [Ctrl]+[Shift]+[PgUp] |
デフォルトプロファイルで新規タブを開く | [Ctrl]+[Shift]+[T] |
プロファイル1で新規タブ | [Ctrl]+[Shift]+[1] |
プロファイル2で新規タブ | [Ctrl]+[Shift]+[2] |
プロファイル3で新規タブ | [Ctrl]+[Shift]+[3] |
プロファイル4で新規タブ | [Ctrl]+[Shift]+[4] |
プロファイル5で新規タブ | [Ctrl]+[Shift]+[5] |
プロファイル6で新規タブ | [Ctrl]+[Shift]+[6] |
プロファイル7で新規タブ | [Ctrl]+[Shift]+[7] |
プロファイル8で新規タブ | [Ctrl]+[Shift]+[8] |
プロファイル9で新規タブ | [Ctrl]+[Shift]+[9] |
現在と同じプロファイルで新規タブを開く | [Ctrl]+[Shift]+[D] |
次のタブに移動 | [Ctrl]+[Tab] |
前のタブに移動 | [Ctrl]+[Shift]+[Tab] |
先頭のタブに移動 | [Ctrl]+[Alt]+[1] |
2番目のタブに移動 | [Ctrl]+[Alt]+[2] |
3番目のタブに移動 | [Ctrl]+[Alt]+[3] |
4番目のタブに移動 | [Ctrl]+[Alt]+[4] |
5番目のタブに移動 | [Ctrl]+[Alt]+[5] |
6番目のタブに移動 | [Ctrl]+[Alt]+[6] |
7番目のタブに移動 | [Ctrl]+[Alt]+[7] |
8番目のタブに移動 | [Ctrl]+[Alt]+[8] |
9番目のタブに移動 | [Ctrl]+[Alt]+[9] |
フォントサイズを拡大 | [Ctrl]+[=(イコール)] |
フォントサイズを拡大縮小 | [Ctrl]+[-(マイナス)] |
フォントサイズをデフォルトに戻す | [Ctrl]+[0] |
Windows Terminalのキーボードショートカット |
現在のところWindows Terminalにはオンラインヘルプ機能はなく、キー割り当てを知るためには、前述のdefaults.jsonファイルを見る必要がある。前述のsettings.jsonファイルで全ての割り当てを変更することが可能だが、シェルプログラムやコンソールアプリケーションでの利用を想定して、デフォルトでは、[Ctrl]+英字のキーへの割り当ては控えられている(例外は、クリップボード用の[Ctrl]+[C]キーと[Ctrl]+[V]キー。defaults.jsonでは定義されておらず、settings.json側で定義されている)。
Copyright© Digital Advantage Corp. All Rights Reserved.