Windows Terminalの設定、各種コマンドラインインターフェイスを起動するプロファイル設定についてなど。

本内容は2020年4月時点、プレビュー版のVersion 0.10.781.0に基づく。

インストール

2020年4月時点では、Microsoft StoreのWindows Terminal (Preview)よりプレビュー版を入手できる。

Windows Terminal (Microsoft Store)

設定ファイル (profiles.json)

タイトルバー部分にあるプルダウンメニューのSettingsまたはショートカットキー[Ctrl]+[,]で設定ファイル(profiles.json)が開く。 この内容を編集することで各種設定を変更できる。

設定ファイルは内容が更新されると自動的に再読込される。 このとき記述内容にエラーがあれば、表示される。

再読込した設定内容にエラーがある場合

設定ファイルを開く際はエディタの選択はできず、拡張子.jsonに割り当てられている規定のプログラムで開かれるので、好みのエディタがある場合は事前に規定のプログラムを変更しておくとよい。

なお、設定ファイルのフルパスはC:\Users\username\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\profiles.jsonとなっている。

設定ファイルの構造

プルダウンメニューで表示される項目を追加するには、プロファイルを設定ファイルに追加する。 各プロファイルにはユニークなIDとしてGUIDを割り当てる。 設定ファイルにおけるプロファイル関連の構造を簡略化すると次のとおり。

profiles.jsonにおけるプロファイル関連の設定
{
  // デフォルトとなるプロファイルのGUID
  // 以下のプロファイルのリストのうち、GUIDが一致するものがデフォルトととして扱われる
  "defaultProfile": "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx01}",

  "profiles": {
    "defaults": { // すべてのプロファイルに適用されるデフォルトの(共通の)設定を指定する
      :
      :
    }
    "list": [ // プロファイルのリスト
      {
        // プロファイルの設定(1)
        "guid": "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx01}", // プロファイルにユニークなキーとしてGUIDを指定する
        "name": "profile 1",                              // プロファイルの表示名を指定する(プルダウンメニュー等で表示される)
        "commandline": "C:\\path\\to\\cli.exe /x /y:zzz", // このプロファイルで起動するコマンドラインインターフェイスの
          :                                               // コマンドライン(オプションを含む)を指定する
          :
      },
      {
        // プロファイルの設定(2)
        "guid": "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx02}",
        "name": "profile 2",
        "commandline": "C:\\path\\to\\another\\cli.exe",
          :
          :
      }
    ]
  }
}

各プロファイルでは、guidnameが必須のプロパティとして定義されているので、この2つは必ず指定する必要がある。

定義されているプロパティの一覧とデフォルト値は、Profiles.json Documentationにて参照できる。

主なプロパティは次のとおり。

commandline
プロファイルで起動するコマンドラインインターフェイスの、オプションを含むコマンドラインを指定する
startingDirectory
起動時のカレントディレクトリ(作業フォルダ)を指定する。 "%USERPROFILE%"などを指定することができ、環境変数は展開される。
closeOnExit
コマンドラインインターフェイスのプロセスが終了した場合に、タブも閉じるかどうかを指定する。
"graceful"(デフォルト)
正常終了した場合のみ閉じる。
"always"
異常終了かどうかに関わらず常に閉じる。
"never"
正常終了かどうかに関わらず常に開いたままにする。
icon
タブやドロップダウンメニューに表示されるアイコンを指定する。 icoファイルに限らず、pngファイルなど任意のサイズ・フォーマットの画像ファイルが指定できる模様。
一方、exeファイルを指定してもそのアイコンが表示されることはない模様。
hidden
プロファイルを一覧から隠すかどうか。 使用しないプロファイルがあるが、設定は残しておきたいような場合には"true"にすることで隠しておくことができる。

デフォルトのプロファイル(プロファイル共通の設定)では次のようなプロパティが指定できる。

initialCols, initialRows
ターミナルの行数・列数の初期サイズ
fontSize
フォントサイズ
fontFace
フォント名

プロファイル以外にも、カラースキームやキーバインディングの設定も行うことができる。

GUIDの生成

プロファイルに指定するためのGUIDを生成する方法について。 profiles.jsonでは、ブレース付き32桁形式のGUIDを指定する。

Windows PowerShellを使う場合

PowerShellを起動し、[Guid]::NewGuid()と入力すれば新しいGUIDを生成できる。 [Guid]::NewGuid().ToString("B")とすればブレース付きになる。

PowerShellでGUIDを生成する
PS C:\Users\smdn> [Guid]::NewGuid().ToString("B");
{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

コマンドラインからPowerShellを起動してGUIDを生成するには次のようにする。

コマンドラインからPowerShellを起動してGUIDを生成する
C:\Users\smdn>powershell -Command "[Guid]::NewGuid().ToString('B')"
{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

csi.exeを使う場合。

csi.exeを起動し、return Guid.NewGuid();と入力すれば新しいGUIDを生成できる。 return Guid.NewGuid().ToString("B");とすればブレース付きになる。

csi.exeを使ってGUIDを生成する
C:\Users\smdn>csi.exe
Microsoft (R) Visual C# インタラクティブ コンパイラ バージョン 3.5.0-beta4-20153-05 ()
Copyright (C) Microsoft Corporation. All rights reserved.

詳細については、「#help」と入力します。
> return Guid.NewGuid().ToString("B");
"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"

プロファイルの例

各種コマンドラインインターフェイスを使うためのプロファイルの記述例。

csi.exe

Windows Terminalでcsi.exe(C# REPL コマンドラインインターフェイスあるいはC# インタラクティブコンパイラ)を使うためのプロファイル。

Windows Terminalでcsi.exeを動作させた例

csi.exeはRoslynのディレクトリに含まれている。 フルパスは下記のとおり。

Visual Studio Community 2017の場合
C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\Roslyn\\csi.exe
Visual Studio Community 2019の場合
C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\MSBuild\\Current\\Bin\\Roslyn\\csi.exe
csi.exeのプロファイル例
{
  "guid": "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}",
  "name": "csi.exe",
  "commandline": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\MSBuild\\Current\\Bin\\Roslyn\\csi.exe",
  "icon": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\ManagedLanguages\\VBCSharp\\LanguageServices\\Interactive\\Resources\\ScriptFile.ico",
  "startingDirectory": "%USERPROFILE%",
  "closeOnExit": "always"
},
  • csi.exeはCTRL+Cで終了する際、終了コード付きでプロセスを終了する。 ([process exited with code 3221225786]と表示されたままになる。) 終了と同時にタブを閉じるようにしたい場合はcloseOnExit"always"等にする。
    • Environment.Exit(0);と入力することで、正常終了させることもできる。
  • csi.exeのオプションとして/u:<namespace>あるいは/using:<namespace>を指定すると、その名前空間namespaceをインポートした状態で起動できる。
  • csi.exeのオプションとして/r:<dll>を指定すると、ライブラリアセンブリdllを参照した状態で起動できる。

Git Bash

Windows TerminalでGit Bash(Git for Windows)を使うためのプロファイル。

bash.exeのフルパスは、デフォルトではC:\\Program Files\\Git\\bin\\bash.exeとなる。

Git Bashのプロファイル例
{
  "guid": "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}",
  "name": "Git Bash",
  "commandline": "C:\\Program Files\\Git\\bin\\bash.exe",
  "startingDirectory": "%USERPROFILE%",
  "icon": "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico"
},
  • .bashrc
    • デフォルトでは%USERPROFILE%\.bashrcを読み込もうとする。 これを読み込ませたくない場合はオプション--norcを指定する。 特定のbashrcファイルを読み込ませたい場合は--rcfile fileを指定する。
    • 文字化けする場合は、.bashrcにexport LANG=ja_JP.UTF-8を追記する。