【Wez's Terminal Emulator】どこでも同じターミナルを用意する


/darallium/です！ご覧いただきありがとうございます． 😊

「CLI初心者でも感動するような，それでいて汎用性・拡張性の高いCLIツール」を紹介する7日間の最終日の記事です 🙇

本日は「どこへ行っても通用する最強のターミナル」をテーマに，Wez's Terminal Emulatorを紹介します:relaxed:

# Wez's Terminal Emulator

Wez's Terminal Emulatorとは，Rust 製のターミナルエミュレータである．

Linux, MacOS, Windows OSのすべての環境で動き，同じコンフィグで同じ動作を示す．GPUも使用するので描画も高速である．ターミナルエミュレータの外に，ターミナルマルチプレクサとしての機能も果たす．

めんどくさいので，本稿では`WezTerm`と表記する．

# install

### dependencies

## windows 

```bat
winget upgrade wez.wezterm
```

## macOS

```shell
$ brew install --cask wezterm
```

## Debian系

https://wezfurlong.org/wezterm/install/linux.html#installing-on-ubuntu-and-debian-based-systems

上記のリンクから合わせてダウンロードすればよい.

```
curl -LO <fileリンク>
sudo apt install -y <ファイル名>
```
でインストールできることを覚えておけばよいか．

# そのほかのLinux dist

https://wezfurlong.org/wezterm/install/linux.html#installing-on-linux-using-appimage

上記のリンクからAppImageをダウンロードし，実行すれば入る．

筆者はAppImageというものを知らなかったが，Distを無視して汎用的に入れてくれるようだ．なかなか便利そうだ．

# チュートリアル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/196553/c49c6267-ba77-5fa3-0195-04d141355b42.png)


windowsの場合wezterm-gui.exe，そのほかの場合weztermと打ったら実行できるだろう．

`wezterm show-keys`とすると，キーバインドが表示される．

大量に表示されるので遊んでみるといいだろう． CopyModeやPane, windowなどはこのターミナルの大きな特徴の一つなので楽しむといいだろう．

# コンフィグいじり

メ　イ　ン　コ　ン　テ　ン　ツ

筆者がこれがかなり大きい強みだと思っている部分だ．イベントフックして機能を追加してみたり，キーバインドをいじいじしてNeovimのような魔環境を構築してみたり，色味をいじって気持ちよくなってもよい．

## ことはじめ

まずは雛形を作ろう．すべてのOSで`~/.config/wezter/wezterm.lua`に記述すればよい．以下を記述しよう．

```lua
-- Pull in the wezterm API
local wezterm = require 'wezterm'

-- This table will hold the configuration.
local config = {}

-- In newer versions of wezterm, use the config_builder which will
-- help provide clearer error messages
if wezterm.config_builder then
  config = wezterm.config_builder()
end

-- This is where you actually apply your config choices

-- For example, changing the color scheme:
config.color_scheme = 'AdventureTime'

-- and finally, return the configuration to wezterm
return config
```

スクリプトを複数書きたい場合は，
`~/.config/wezterm/`以下にluaスクリプトを配置し，`wezterm.lua`からrequireして`apply_to_config(config)`してやればよい．

`require("script name")`するとき，`~/.config/wezterm/`を親として相対パスで指定してやれば良い．`~/.config/wezterm/submod.lua`の場合は`require("submod").apply_to_config(config)`だ．このconfigは`wezterm.lua`が`return`する`config`だ．

## キーコンフィグ

キーコンフィグをいじりたい場合は，以下の手順を取る．
1. デフォルトキーコンフィグをと全く同じキーバインドのスクリプトを記述する
1. デフォルトキーコンフィグを無効化する

まずは，`wezterm show-keys --lua >> ~/.config/wezterm/keybind.lua`し，`require("keybind")`しよう．このコマンドは，登録されているキーバインドをkeybind.luaにリダイレクトして書き込む．

キーを設定するとき，
```lua
<****_mode> = {
    { key = '<key>', mods = '<modifier, altやCTRLなどをパイプで区切って>', actions = <実行するコマンド> ''}
}
```
などとすれば割り当たる．詳しくは公式ドキュメントを読もう．

https://wezfurlong.org/wezterm/config/keys.html#voidsymbol

## 見た目をよくする

今回は筆者が大好きな`catppuccin`テーマを導入する．

WezTermには，700を超えるカラースキームが内蔵されている．これは，`iTerm2やGogh`で使われていたものがすべて使用できる．

しかも，導入が非常に簡単で，

`config.color_scheme = 'Catppuccin Macchiato'`

などとすれば入る．以下のリンクにリストがあるので好きなスキームを入れてみてほしい．

https://wezfurlong.org/wezterm/colorschemes/index.html

# あとがき

WezTermについて，Luaでの設定として見た目とキーバインドの設定を紹介した．しかし，本題はこれからで，イベントやペイン，タブを駆使してtmuxライクな作業をしてみたり，クイックセレクトなどを駆使して快適ターミナルライフをすごしてみよう．他にも，Sixelに対応しているのでimgcatなどを用いて画像や動画を表示することができる．いろいろ試してみてほしい．


# references 

https://wezfurlong.org/wezterm/index.html

https://technixleo.com/install-wezs-terminal-windows/

Ritsumeikan Security Teamの先輩方