Windows Terminalの設定が変わったので改めていじる

# 出ましたね正式版

少し前に[Windows Terminalを自分で使いやすいようにいじった話](https://qiita.com/hotaru51/items/8a5904301e2427862fb8)を書いて、その中で「正式版楽しみだなぁ」なんて言っていたら、ついに正式版出てきました！

ということで早速…
([今後は正式版とPreview版に分かれるようですよ](https://forest.watch.impress.co.jp/docs/news/1253445.html))
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304815/e6033c97-ebb0-986c-3f26-5ccb9231381d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304815/acb83e76-ab98-7e80-34ce-da90c8e3c7b9.png)
あ、あれ…？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304815/41dbb7f9-0c6f-4f7f-8567-114af8d537c6.png)
(もう入っとるやん…)

# 正式版の前の大きめな変更

勝手にバージョン上がっていましたね。普通に使ってる感じではなにか変わった印象はないですが…
でも実は、正式版の1つ前のバージョンで設定ファイルに大きな変更がありました。

* [Windows Terminal Preview v0.11 Release](https://devblogs.microsoft.com/commandline/windows-terminal-preview-v0-11-release/)

`v0.11` で設定ファイルの名前が `profiles.json` から `settings.json` に変更され、構造も変更されてます。v0.11に更新すると `settings.json` が新たに作成され、設定がデフォルトに戻ってしまうので、改めて設定をいじる必要があります。
ホントはこのバージョンにしたときに書くべきでしたが、OS再インストール後でいろいろわちゃわちゃしていたので…

# 新しい設定のデフォルト

新しい設定ファイルのデフォルトはこんな感じです。
ちなみに格納場所は変わらず `%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_{ランダムな文字列}\LocalState` 配下になります。

```json:settings.json
{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "copyOnSelect": false,
    "copyFormatting": false,
    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
        },
        "list":
        [
            {
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },
            {
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "コマンド プロンプト",
                "commandline": "cmd.exe",
                "hidden": false
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            },
            {
                "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
                "hidden": false,
                "name": "Ubuntu-18.04",
                "source": "Windows.Terminal.Wsl"
            }
        ]
    },
    "schemes": [],
    "keybindings":
    [
        { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },
        { "command": "paste", "keys": "ctrl+v" },
        { "command": "find", "keys": "ctrl+shift+f" },
        { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" }
    ]
}
```

前回の記事ではいろいろ端折ってましたが、今回はコメント消しただけです。デフォルトがかなりシンプルになりました。
カラースキームはどこに行っちゃったんでしょうね…

# 改めて設定

では、前回入れた設定を戻していきます。

## 元 `globals` の設定と `$.profiles.defaults` の設定

便利になったのが、`$.profiles.defaults` です。各profileで共通の設定を入れたい場合はここに定義すれば全てのprofileに反映されます。フォントとかカーソルとか背景の透過設定は全部共通で使いたいので、ここにまとめて設定してしまいます。
ついでに前回の `globals` に置いてた設定も戻して、`defaultProfile` も一番使うUbuntuにしておきます。
大体は前回と同じなのでサラッと。

### 元globals

* 起動時のデフォルトのprofile( `defaultProfile` )
* 文字列選択時に自動でクリップボードにコピー( `copyOnSelect` )
* 文字列コピー時に書式情報も含める( `copyFormatting` )
    * (これ需要あるのかな…)
* 常にタブを表示( `alwaysShowTabs` )
* 起動時の行、列( `initialCols` , `initialRows` )

### $.profiles.defaults

* 透過率( `acrylicOpacity` )
* 透過率の設定を有効に( `useAcrylic` )
* 余白( `padding` )
* フォント指定( `fontFace` )
* フォントサイズ( `fontSize` )
* カーソル形状( `cursorShape` )

```json
{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
    "copyOnSelect": true,
    "copyFormatting": false,
    "alwaysShowTabs" : true,
    "initialCols" : 150,
    "initialRows" : 40,
    "profiles":
    {
        "defaults":
        {
            "acrylicOpacity" : 0.75,
            "useAcrylic" : true,
            "padding" : "0",
            "fontFace" : "Migu 1M",
            "fontSize" : 10,
            "cursorShape" : "filledBox"
```

## profile個別の設定

profile個別の設定をしていきます。と言ってもそこまでガツガツいじってないので、変更箇所は少ないです。
まずは使わない `Azure Cloud Shell` の `hidden` を `true` にして非表示にしてしまいます。
Ubuntuも前回同様、`/home/<ユーザ名>` で開始するように `startingDirectory` を指定します。
そして今回は以下を参考に、GitBashもWindows Terminalで使えるようにしました。Windows側のコマンドやGitを使ったりするときにWindows Terminalで一緒に扱えると何かと便利です。

* [Windows Terminal で Git Bash を表示する](https://qiita.com/yokra9/items/bdd0882268b308cf22ca)

```json

        [
            {
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },
            {
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "コマンド プロンプト",
                "commandline": "cmd.exe",
                "hidden": false
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": true,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            },
            {
                "guid": "{36071b11-0db2-4ab7-b938-a4162c111253}",
                "commandline": "C:\\Program Files\\Git\\bin\\bash.exe",
                "cursorColor": "#FFFFFF",
                "icon": "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico",
                "name": "Git Bash",
                "startingDirectory": "%USERPROFILE%"
            },
            {
                "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
                "hidden": false,
                "name": "Ubuntu-18.04",
                "startingDirectory" : "//wsl$/Ubuntu-18.04/home/hotaru",
                "source": "Windows.Terminal.Wsl"
            }
        ]
```

## キーバインド

そして最後にキーバインドです。こちらもわりと変更が入ってます。前回イマイチだった `ctrl+w` の `closeTab` がいなくなったのは良きですが、 `ctrl+c` にデフォで割り当てがあるのは個人的には「うーん」だったり…
そして `split` 系も書き方が変わってます。デフォルトの `"split": "auto"` は、ウィンドウのサイズによって自動的に縦割りか横割りかが変わります。このあたりも自分で制御したいので前の設定になるように戻します。
前述の記事に設定例の記載があるので、 `splitMode` とキーの設定だけ変えました。

```json
    "keybindings":
    [
        { "command": "find", "keys": "ctrl+shift+f" },
        { "command": { "action": "splitPane", "split": "horizontal", "splitMode": "duplicate" }, "keys": "alt+shift+o" },
        { "command": { "action": "splitPane", "split": "vertical", "splitMode": "duplicate" }, "keys": "alt+shift+i" },
        { "command": "nextTab", "keys": "ctrl+right"},
        { "command": "prevTab", "keys": "ctrl+left"}
    ]
```

# おわり

以上です。元々ガッツリといじってないこともあり、今回の変更のおかげで設定がスッキリしたのでいい感じです。
そのうちカラースキームとかもいじっていきたいですね。

# 参考

* [Microsoft、「Windows Terminal 1.0」を発表 ～タブUIの新しいターミナルアプリ](https://forest.watch.impress.co.jp/docs/news/1253445.html)
* [Windows Terminal Preview v0.11 Release](https://devblogs.microsoft.com/commandline/windows-terminal-preview-v0-11-release/)
* [Windows Terminal で Git Bash を表示する](https://qiita.com/yokra9/items/bdd0882268b308cf22ca)