Windows の Terminal を変えた

[以前の記事](https://qiita.com/kikuchi_kentaro/items/9dc441f64c17a38aad96) で、Hyper を使うようにしていたが、最近もっと良いものがないか探した。

# 改めて、Hyper

https://hyper.is/
https://github.com/zeit/hyper

<img src="https://qiita-image-store.s3.amazonaws.com/0/20198/735892da-8107-0a16-22b4-6d47aa030526.png" width="540px" />

- Electron 製
- Windows, macOS, Linux に対応

悪くは無かったが、パフォーマンス面はどうしても気になった。
以下は、候補として試してみたもの。

# Terminus

https://eugeny.github.io/terminus/
https://github.com/Eugeny/terminus

 <img src="https://qiita-image-store.s3.amazonaws.com/0/20198/d9143d9e-c12e-5aee-7baa-adaf86d6e97f.png" width="700px" />

- Electron 製
- Windows, macOS, Linux に対応
- まだ α 版

## 特徴

- 機能
    - タブ機能
    - 簡易的な SSH Client 機能
    - 日本語周りで困ることが少ない
    - リガチャーも大丈夫
- デザイン
    - そこそこ良い
    - 背景透過可能
    - 外観テーマ機構あり
    - カラースキーマのテーマ機構あり
    - CSS による直接的なデザインカスタムも可能
    - タブの位置、カーソル等のカスタムも可能
- パフォーマンス
    - 起動は遅い
    - 動作もちょい重め
- 拡張性
    - Plugin 機構あり
    - Hotkey カスタムあり
    - Shell の追加・カスタムあり
- その他
    - Windows Friendly
        - Clink による Tab 補完
        - Powershell Core に対応
        - Wsl 対応
            - いまいち上手く動けてない ( 2019/2/2 現在 )

## インストール

Scoop に対応しているので、以下でサクッと。

```powershell
PS> scoop install terminus
```

設定は、フッターにあるギアーアイコンで表示する設定タブで大体のことはできる。
<img src="https://qiita-image-store.s3.amazonaws.com/0/20198/6ff836a4-807a-7b81-173d-17788bf5a126.png" width="200px" />
<img src="https://qiita-image-store.s3.amazonaws.com/0/20198/54041df1-72f0-c60b-1eba-b11180364ffb.png" width="700px" />



## 感想

全体的に Hyper と似ているが、Hyper よりも **Windows ユーザの方を向いている** 感じがする。

# Alacritty

https://github.com/jwilm/alacritty
<img src="https://qiita-image-store.s3.amazonaws.com/0/20198/d8276ba3-232f-dd1e-8e07-137c41fe57a4.png" width="700px" />

- Rust 製
- Windows, macOS, Linux に対応
- GPU-accelerated
- まだ α 版

## 特徴

- 機能
    - **タブ機能なし**
        - Window Manager や tmux を使えとのこと
            - [Windows の Sets 機能が導入見送りになった事を最近知ったらしい](https://github.com/jwilm/alacritty/issues/1981)
    - 日本語入力があさっての方向に
        - Sublime Text と同じ感じ
- デザイン
    - 最低限
    - 背景透過可能
    - 外観テーマ機構なし
        - そもそも、外観が無い
    - カラースキーマは個別にカスタム
        - [公式 Wiki にテンプレートあり](https://github.com/jwilm/alacritty/wiki/Color-schemes)
        - デフォルトは Tomorrow Night Bright
- パフォーマンス
    - **起動は早い**
    - **動作も早い**
    - **リソース使用量が非常に小さい**
    - ストレスを感じることが無い
- 拡張性
    - Hotkey カスタムあり
    - Shell カスタムあり

## インストール

Scoop に対応しているので、以下でサクッと。

```powershell
PS> scoop install alacritty
```

Explorer と統合するなら、以下を入れておけば良い。

```bash
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\Alacritty]
"Icon"="C:\\Users\\username\\scoop\\apps\\alacritty\\current\\alacritty.exe"
@="Oepn with Alacritty"

[HKEY_CLASSES_ROOT\Directory\Background\shell\Alacritty\command]
@="C:\\Users\\username\\scoop\\apps\\alacritty\\current\\alacritty.exe --working-directory \"%V\""

[HKEY_CLASSES_ROOT\Directory\shell\Alacritty]
"Icon"="C:\\Users\\username\\scoop\\apps\\alacritty\\current\\alacritty.exe"
@="Oepn with Alacritty"

[HKEY_CLASSES_ROOT\Directory\shell\Alacritty\command]
@="C:\\Users\\username\\scoop\\apps\\alacritty\\current\\alacritty.exe --working-directory \"%V\""
```

設定は、`C:\Users\username\AppData\Roaming\alacritty` にある `alacritty.yml` を直接編集する。

## 感想

このスピードは一度体験したら他に戻れない。
シンプルにまとめられているので、コマンドプロンプトの上位版といった感じもある。とはいえ、タブは欲しかったなぁ。

今どうしても納得いかないのは、アイコンのデザイン位。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/20198/9682b585-2ca8-8058-1195-9fe50655bae5.png)

# Extraterm

http://extraterm.org/index.html
https://github.com/sedwards2009/extraterm
<img src="https://qiita-image-store.s3.amazonaws.com/0/20198/55eef124-ea36-cbcb-3a47-0c28bc101fe4.png" width="700px" />

- Electron 製
- Windows ( + Cygwin ), macOS, Linux に対応
- Pre-Release という位置付け

## 特徴

- 機能
    - **キーボード操作に特化している**
        - **コマンドパレット**
        - ノマルモード/カーソルモード切り替え
            - **カーソルモード**
                - 出力上をカーソルが移動し、編集・コピーができる
                  <img src="https://raw.githubusercontent.com/sedwards2009/extraterm/master/docs/edit_direct.gif" width="600px" />
    - タブ機能
    - パネルのタイリング機能
    - 自動更新機能
    - 画像 Viewer 機能 ( `show` コマンド )
- デザイン
    - そこそこ良い
    - 外観テーマ機構あり
    - カラースキーマのテーマ機構あり
    - ユーザ作成テーマの読み込みも可能
- パフォーマンス
    - 起動は遅い
    - 動作は気にならない程度
    - 表示はモッサリ感あり
- 拡張性
    - Hotkey カスタムあり
    - Shell の追加・カスタムあり
- その他
    - Windows Friendly
        - Powershell Core に対応
        - Wsl 対応
    - 公式ドキュメントが充実している

## インストール

Github Release から地道に取ってくる。
<img src="https://qiita-image-store.s3.amazonaws.com/0/20198/95c4220d-4e8b-a463-66d6-39e909171338.png" width="600px" />
展開し、`PATH` に追加する。
何やら DLL  等の謎ファイルが大量に含まれているが、殆どが Electron 関連のもののようだ。

設定は、`Setting` で表示する設定タブで行う。
<img src="https://qiita-image-store.s3.amazonaws.com/0/20198/afde8dff-58a2-b707-ad6d-c8d480fcc324.png" width="300px" />
<img src="https://qiita-image-store.s3.amazonaws.com/0/20198/f48e7fd1-6867-ee06-7a0a-3075bd1734d7.png" width="700px" />

## 感想

とても使いやすい。パフォーマンスと機能性を良いところでバランスを取っている印象。
また、Windows 対応がとてもしっかりしている。いくつか使った中で一番良くできているんじゃなかろうか。
インストールとパッケージ化部分がもう少しスッキリするとなお良いのでは。

気になっているのは、タブ上でのマウスホイールクリックが閉じるじゃない事と、全タブが閉じるとアプリ自体が閉じてしまう事。

# Fluent Terminal

https://github.com/felixse/FluentTerminal
<img src="https://raw.githubusercontent.com/felixse/FluentTerminal/master/Screenshots/terminal.jpg" width="700px" />

- C# 製 UWP
- Windows にのみ対応

見た感じ Electron 系の Terminal と被るが、C# なのでパフォーマンスは良さそう。
まだ使えてないので、今後使ってみる。

# その他

## upterm

https://github.com/railsware/upterm
<img src="https://raw.githubusercontent.com/railsware/upterm/master/README/main.png" width="400px" />

- Electron 製
- Windows, macOS, Linux に対応
- コマンド補完機能あり

Hyper から乗り換えるほどでは無いかなと判断し、未検証。

# 結論

Alacritty をメインとしながら、複数 Terminal を並べたいときだけ Extraterm を利用している。