背景
terminalに関するいくつかの選択肢
iterm2を長年使ってきたわけだけど、飽きてきてしまってGUIでの設定も面倒なので調べてみると、現在は結構色んな選択肢があることが分かった。いくつか試してみたのでメモを残しておく(新しく試したら追記する)。
image protocol
X11を使わない場合にはimage protocolで画像データをterminal上へ転送する必要がある。image protocolが使えないものについては除外した。使えるのは
- iterm2 image protocol
- sixel
- kitty graphics protocol (KGP)
これらに対応していない場合、画像データはX11を使うかファイルデータ転送をしなければならない。対応している場合はterminal上で画像が表示されるため非常に高速に計算データ可視化ができる。
iterm2のimage protocolについては以下。imgcatというシェルを使うと独自の方法でterminal上で画像が表示できる。
3つの方法の中で画像表示に優れているのはsixelで、リモート側でminiforgeが使えるならconda経由でimg2sixel(libsixel)がインストールできるので、画像表示が可能。
terminalの比較
wezterm
一番安定していた。iterm2のものは使えないけどsixelが使える。多段SSHも問題ない。Rioに比べると動作が重い。しかしRioよりもデフォルト設定でHPC関連の利用には支障がない。互換性を重視した設計のおかげか。
Rio
homebrewからインストールできる。画像表示は安定していたものの、多段SSHでの動作が不安定。例えばなぜかbackspaceが効かなくなったりする(環境変数TERMの設定で解決)。weztermより軽快に動作するだけに残念。デフォルトの設定だと不具合が多い。不具合を見つけたらその都度設定の見直しが必要。
backspaceの問題はterminalの種類がリモートで認識されていないのが原因。以下をconfigに記述すれば解決できる。
env-vars = ["TERM=xterm-256color"]
kitty
iterm2, sixelには対応していない。SSH接続で以下を実行することでリモート側の画像をkitty icatで表示できるようになる。
$ kitty +kitten ssh [hostname]
しかし、多段SSHでも画像が表示できるものの、画像表示にsixelに比べると時間がかかりすぎる。> 1度表示したら以降はなぜか軽くなった。
ghostty
weztermより軽量、rioと同じぐらい軽快。しかし、iterm2, sixelには対応していない。KGPが使えるとあるけど、実際にはローカルホストで使えるのみで、多段SSHをする場合にはエラーが出てうまくいかない。
そのため、実質ローカルでしか使えないterminalアプリとなってしまった。> kittyをリモートにインストールすれば使える。以下でkittyをリモートにインストール。
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
echo 'export PATH=$HOME/.local/kitty.app/bin:$PATH' >> ~/.bashrc
以下で画像表示は可能。ただし画像の拡大がうまくいかない・・
kitty icat test.png