terminal emulator を選定・・・
主に3つの動作環境、Windows
, Windows wsl
, Ubuntu-20.04
があってtoolや設定をある程度共通にしたいということで試行錯誤していた。
他に ssh経由
, Windows wslg
もあるよ。
wezterm
wezterm
が有望であることがわかった
font fallback | multiplexer | emoji | nerdfnt | graphics escape | |
---|---|---|---|---|---|
wezterm windows | ✅ | ✅ | color | ✅ | conpty issue |
wezterm wsl | ✅ | ✅ | color | ✅ | conpty issue |
wezterm ssh | ✅ | ✅ | color | ✅ | sixel, kitty, iterm2 |
wezterm linux | ✅ | ✅ | color | ✅ | sixel, kitty, iterm2 |
conpty を通すときに escape sequence が加工されるとかで、sixel
, kitty
, iterm2
いずれのプロトコルもうまくうごかなかった。iterm2
は絵はでるのだけど場所がずれるという惜しい挙動・・・。
SSH 経由で WSL することで対処する。
wslg(xtermなど)
xterm
は軽快できれいに表示できるので良かった。フォントのフォールバックができないぽいのが弱点。
urxvt
は、NerdFonts
がうまくでなかった。
st
(simple term) もフォントまわりでつまづきだったかな。
font fallback | multiplexer | emoji | nerdfnt | graphics escape | |
---|---|---|---|---|---|
xterm wslg | mono | ✅ | sixel | ||
mlterm wslg | ✅ | mlterm-con | color | ✅ | sixel |
mlterm はフォント周りの設定が強力でよかった。 文字セットごとにフォントを個別に指定できるので、フォントを合成せずともばらのままでよい。
mlterm-con
という multiplexer があり sixel support があるらしい。
自前ビルドが必要そう(apt には含まれていないぽい)。
wslgは、頻繁にキーボードが押しっぱなしになったり不安定なような・・・ https://github.com/microsoft/wslg/issues/207 なおっているけ、リリースに時間がかかりそう?
libvte
libvte
系のterm。
gnome-terminal
, xfce4-term
など。
gpu rendering
GPUレンダリングで araclitty
, kitty
そして wezterm
がある。
wezterm
が Windows
をサポートしていて、フォントのレンダリング、タブのサポートと総合的に良い。
その他
- tabby
- RLogin
- ConEmu
など。
要件
日本語、中文、絵文字, NerdFonts を同時にいい感じに表示したい
となるとすべてを含むひとつのフォントより、主になるフォントを設定してそれにグリフが含まれなかったら、他のフォントにフォールバックする挙動をしてもらう方が便利。
いくつかのフォントを試してみたのだけど、 HackGenNerd Console
が良かった。
で、中文の足りない漢字を 更紗ゴシックフォント
にフォールバックするという組み合わせ。
がんばって完璧な合成フォントを自作すればいいのだけど、よくわからないので、 複数フォントのフォールバック機能が必要。
かつて w3m で表示が乱れることで苦労した ambigous width
問題はあまり気にならなくなっていた。
なんか、表示は2カラム使うが、データ上は1カラムと見なすような扱いになっていて、
X
につづいて
で隙間を開けることで正しく表示できるようだ。
NerdFonts や 絵文字 はそのようになっている?
エスケープシーケンスで画像を表示したい
sixel
とか kitty
とか iterm2
による画像表示。
graphics | |
---|---|
Windows Native(conpty) | |
wsltty | sixel |
xterm wslg | sixel |
wezterm linux | sixel, kityt ,iterm2 |
という感じになった。wsltty
は conpty
ではなくて winpty
なので例外的に sixel
が通過できるらしい。
動く環境でも tmux
を挟むと動かなくなる。
代わりに terminal emulator の方で multiplexer(タブ機能) する必要が発生。
まとめ
総合力で wezterm が強い。
- あまり頑張らなくてもフォントがうまく設定できる(cjk, NerdFonts, 絵文字)
- multiplexer 機能あり
- sixel, kitty, iterm2 プロトコルで画像を表示できる
- Windows でも動く