Windows Terminal でも Cmder を使う方法

Microsoft 製ターミナルの Windows Terminal、めでたく Ver 1.0 を迎えましたね。

[Microsoft、「Windows Terminal 1\.0」を発表 ～タブUIの新しいターミナルアプリ \- 窓の杜](https://forest.watch.impress.co.jp/docs/news/1253445.html)

プレビュー版の時はあまり使っていなかったのですが、今回使ってみたところ中々使い勝手がよく、今まで愛用していた Cmder から移行することを決めました。

# やっぱりコマンドプロンプトは使いづらい

私の場合、環境変数など諸々の事情もあり、コマンドプロンプトや PowerShell を使うことも少なくありません。
そんなとき、私はコマンドプロンプトの使い勝手を Bash に寄せた **[Cmder](https://cmder.net/)** というターミナルを使っていました。

しかし、Windows Terminal では初期設定でコマンドプロンプト、PowerShell、WSL (Windows Subsystem for Linux) しか起動できません。

**つまり、前述のような事情がある場合、Windows Terminal では素の状態のコマンドプロンプト (あるいは PowerShell) を使うことになってしまいます。**
……辛いですよね？

# Cmder を Windows Terminal 内で使おう！

Cmder は、複数のツール (Conemu, Clink...) を組み合わせて開発されたターミナルアプリです。
標準では [Conemu](https://conemu.github.io/) というターミナルアプリ上で Cmder のシェルが動作しているので、このターミナルを Windows Terminal に差し替える形を取ることで、動作させることが出来ます。

こんな風に。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164949/0c8fe6c8-7556-207a-dfb1-4d2bd99fa681.png)

# Windows Terminal に Cmder 利用のための設定をする

## guid を発行

設定に使うための guid というユニークな ID を発行します。

PowerShell を管理者権限で起動し、以下のコマンドを実行します。
**発行された guid は後の設定に利用するので控えておきましょう。**

`[guid]::NewGuid()`

こちらを実行すると、下記のような結果が得られます。
下記の場合は `0ec43d47-f761-48f3-a99b-a8a73927f159` が guid ですね。

```
PS C:\Windows\System32> [guid]::NewGuid()

Guid
----
0ec43d47-f761-48f3-a99b-a8a73927f159

```

## Windows Terminal に Cmder のシェルを追加

Windows Terminal の設定を開くと、 `settings.json` という設定ファイルが開かれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164949/19287260-b7f5-9ad7-3c9d-09fae0d646b5.png)

このファイル内の `"profiles" -> "list"` という要素が、各シェルの設定項目です。
(参考: [Windows ターミナル プロファイルの設定 \| Microsoft Docs](https://docs.microsoft.com/ja-jp/windows/terminal/customize-settings/profile-settings) )

この項目に Cmder 用の設定を書き加えていきましょう。

```json
{
  .....

  "profiles": {
    "defaults": {
    },

    // "list" 配列に各シェル設定が羅列されている
    "list": [

      // Cmder 用の設定を追記する
      // --- 追記ここから ---
      {
        "guid": "{0ec43d47-f761-48f3-a99b-a8a73927f159}",
        "hidden": false,
        "name": "Cmder",
        "icon": "%USERPROFILE%\\Apps\\cmder_mini\\icons\\cmder.ico",
        "startingDirectory": "%USERPROFILE%",
        "commandline": "cmd.exe /k %USERPROFILE%\\Apps\\cmder_mini\\vendor\\init.bat"
      },
      // --- 追記ここまで ---

      {
        "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
        "hidden": false,
        "name": "Ubuntu-18.04",
        "source": "Windows.Terminal.Wsl"
      },

       .....
     ]
  }
}
```

|キー|値の説明|
|---|---|
|guid|設定項目の guid|
|hidden|起動するシェルのリストに表示するか。通常は false|
|name|シェル名|
|icon|タブに表示するアイコン|
|startingDirectory|起動後のディレクトリ|
|commandline|シェル起動コマンド|

* `guid` には、前述で発行した guid を登録
* `commandline` で指定する `/k` オプションの引数には、`Cmderインストールパス\\vendor\\init.bat` を指定する
    * 設定例にあるように、環境変数を利用することも可能
* `icon` の設定は任意だが、設定する場合は `Cmderインストールパス\\icons\\cmder.ico` を指定するとよい

以上を追記して保存することで、Cmder が選べるようになったかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164949/9261f71e-589d-cfb6-9e00-e69988a909a2.png)

# 最後に

Windows Terminal、これといって尖った機能があるわけではないのですが、スプリットビューなんかもあるし、シンプルでとても使いやすいので気に入っています。

WSL 上の Powerline なんかも綺麗に表示してくれますよ。
**※以下ではフォントに [HackGen](https://qiita.com/tawara_/items/374f3ca0a386fab8b305) の Nerd Fonts 対応版(まだ製作中のものですが…)、テーマには zsh の powerlevel10k テーマを使用**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164949/4c12286e-7844-0b36-4797-15aacdb0a38e.png)