Windows Terminalを使う
Published: 2020-08-01 17:56:48

Windowsでは今までCLI環境としてコマンドプロンプトとPowerShellが提供されてきましたが、新しいCLI環境として[Windows Terminal](https://www.microsoft.com/ja-jp/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab)が5/20にリリースされました。

![Windows Terminal](https://dev-to-uploads.s3.amazonaws.com/i/apqful20bvf21ws3ezj6.png)

Windows Terminalは新しいシェルを提供するわけではなく、Windows Terminalから以下を起動できるようになっています。  

- コマンドプロンプト
- PowerShell
- WSL
- Azure Cloud Shell


Windows Terminalではこれらを複数のタブやペインに分けて同時に操作が可能です。

今後、CLIでパッケージを管理するWindows Package Managerもリリースされるそうなので、Windows環境でもCLIの開発ツールが大分そろってきたのではないでしょうか。

---

### インストール
[Microsoft Store](https://aka.ms/terminal) からインストールできます。

インストール直後は、PowerShellがデフォルトで起動するシンプルな感じです。設定をすることで見た目や操作性をカスタマイズできます。

![Windows Terminal Default](https://dev-to-uploads.s3.amazonaws.com/i/blp02x5ea8yl8svl8jvd.png)

---

### 設定を変更してカスタマイズする

Window Terminalでは起動するシェルごとに設定できる動的プロファイルを設定することができます。

メニューから`設定`を選択すると`settings.json`がエディタで開きます。
このファイルに設定を書いていきます。

設定は大まかに分けて以下があります。

- [グローバル設定](https://docs.microsoft.com/ja-jp/windows/terminal/customize-settings/global-settingshttps://docs.microsoft.com/ja-jp/windows/terminal/customize-settings/global-settings) ・・・ Windows Terminal全体の設定
- [プロファイル設定](https://docs.microsoft.com/ja-jp/windows/terminal/customize-settings/profile-settings) ・・・ シェルごとの設定
- [配色](https://docs.microsoft.com/ja-jp/windows/terminal/customize-settings/color-schemes) ・・・ 独自の配色の作成
- [ショートカットキー](https://docs.microsoft.com/ja-jp/windows/terminal/customize-settings/key-bindings) ・・・ カスタムキーバインドの作成

細かい設定値についてはリンク先のドキュメントを参照してお好みにカスタマイズしてください。

---

### 複数のペインをTerminal起動時に開く

Windows Terminalのプログラム本体`wt.exe`は引数をサポートしています。
これにより複数のタブやペインをターミナル起動時に立ち上げることができます。

以下は3つのペインを立ち上げる場合のコマンドです。
```
start wt '-p "プロファイル名1" ; split-pane -p "プロファイル名2" ; split-pane -p "プロファイル名3"'
```

---

### Powerline をセットアップする

Powerline は、Gitの状態やアイコンをプロンプト表示して見やすくするツールです。
![Power Line](https://dev-to-uploads.s3.amazonaws.com/i/r458xshusg5o9z0cjvpw.png)

事前準備
- Powerlineフォントをインストールする
    プロンプトにアイコン（Powerline グリフ）を表示するために、それに対応したフォントをインストールする必要があります。

    Windows Terminalではデフォルトで[Cascadia Mono](https://docs.microsoft.com/ja-jp/windows/terminal/cascadia-code)が使われるようになっていますが、こちらはPowerlineグリフに対応していません。

    CascadiaにはPowerlineグリフを含むフォントもあるので、[こちら](https://github.com/microsoft/cascadia-code/releases)を別途インストールして使うように設定します。
インストール後、ターミナルの設定に以下を追加し、フォントを読み込みます。

```
    "profiles":
    {
        "defaults":
        {
            ...

            "fontFace": "Cascadia Code PL",
        },
```
1. PowerShellでのPowerlineの設定
  PowerShell を使用して、以下の２つをインストールします。
  - [Posh-Git](https://github.com/dahlbyk/posh-git) ・・・ Git の状態情報の表示や補完を行う
  - [Oh-My-Posh](https://github.com/JanDeDobbeleer/oh-my-posh) ・・・ Powerlineのテーマを提供するライブラリ

```
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
```

以下にモジュールがインストールされます。
```
C:\Users\ユーザ\Documents\WindowsPowerShell\Modules
```

上記モジュールをターミナル（PowerShell）起動時に読み込むための設定を行い、ターミナルを起動するとPowerlineが表示されるようになります。

ファイル：`C:\Users\ユーザ\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1`

```
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme <テーマ名>
```

---

### シェルごとに背景画像を設定する
ターミナルで複数ペインを表示できるようになったので、それぞれを区別しやすいように背景を変えると良いです。

画像は以下に公式のものが公開されています。
気に入ったものをダウンロードして設定ファイルの各プロファイルに画像のパスを紐づけてあげれば、見た目をカスタマイズできます。

- Microsoft
https://wallpaperhub.app/

- Ubuntu
https://design.ubuntu.com/downloads/

設定ファイル
```
        "list":
        [
            {
                "guid": "{XXXXXXXX-XXXX-XXXX-XXxX-XXXXXXXXXXXX}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false,
                "backgroundImageStretchMode": "uniformToFill",
                "backgroundImage": <背景画像のパス>
            },
            {
                "guid": "{XXXXXXXX-XXXX-XXXX-XXxX-XXXXXXXXXXXX}",
                "name": "Ubuntu-18.04",
                "source": "Windows.Terminal.Wsl",
                "hidden": false,
                "backgroundImageStretchMode": "none",
                "backgroundImageAlignment": "bottomRight",
                "backgroundImage":<ロゴ画像のパス>,
                "useAcrylic": false,
            }
        ]
    },
}
```
![Windows Terminal Customize](https://dev-to-uploads.s3.amazonaws.com/i/lfz6dz3fdsv1dzk1pktn.png)

---
Windows Terminalは7月から毎月アップデートされるようで、これからもっと使いやすく改善されていくと思われます。  
Linuxのシェルにもこれで直接アクセスできますし、自分用にカスタマイズすることで、より楽しく開発ができるようになると思います。