WSL + Herdr で日本語入力の表示が崩れたので直した¶
WezTerm から WSL に入り、ターミナル上でHerdrを使っていると、日本語入力中の表示が崩れる問題に遭遇しました。変換中の文字がカーソル位置からずれ、入力中の文字もうまく表示されません。
結論としては、Herdr の設定に次の 2 行を追加したら直りました。
同じ環境で困ったときのために、症状、原因、対処の順にまとめます。
症状と環境¶
問題が起きた環境は次のとおりです(2026-09-03 時点)。
- Windows
- WezTerm
- WSL(Ubuntu 24.04)
- Herdr
- Windows の Google 日本語入力
症状が出たのは、WSL 上で Herdr を起動して日本語を入力したときです。IME の未確定文字とカーソルの表示がおかしくなります。Herdr を介さずに WSL のシェルを使っているぶんには、日本語入力に問題はありませんでした。別の開発機の Arch Linux でも、Ghostty + Herdr の環境なら日本語入力は問題なしでした。
原因はカーソルの描画方法だった¶
調べてみると、Herdr のカーソル描画方法が関係しているようでした。
Herdr のhost_cursorは、次のモードを持っています。
| モード | カーソルの扱い |
|---|---|
native | ターミナル本来のカーソルを使う |
drawn | Herdr 側でカーソルを描画する |
auto(デフォルト) | Windows や WSL では Herdr 側がカーソルを描画する |
一方、Windows の CJK IME は、ターミナルのカーソル位置をもとに変換中の文字を表示します。Herdr が見た目上のカーソルを独自に描画していると、IME が認識するカーソル位置と噛み合わず、未確定文字の表示位置がずれることもあるようです。WSL ではデフォルトのautoがdrawnと同じ扱いになるため、設定を変えない限りこの組み合わせになります。
対処:host_cursor を native にする¶
Herdr の設定ファイルに、次の設定を追加します。
WSL では、設定ファイルは通常次の場所にあります。
host_cursor = "native"にすると、Herdr は外側のターミナルが持つカーソルを使うようになります。自分の環境では、この設定の追加だけで日本語入力の表示崩れが解消し、正常に日本語入力できるようになりました。
まとめ¶
WSL + Herdr で日本語入力の表示がおかしくなったら、まず[ui]のhost_cursor = "native"を試すとよさそうです。
IME の問題だったので当初は WezTerm 側も疑っていましたが、今回の原因は Herdr のカーソル設定でした。IME の表示崩れがターミナル内の TUI アプリケーションでだけ起きるなら、ターミナル本体より先にアプリケーション側のカーソル描画を確認すると切り分けやすくなります。
参考文献¶
- Herdr Issue #1636:“Windows: default drawn host cursor breaks CJK IME composition (invisible composing char + preview offset by one cell)”。未確定文字が見えず、表示が 1 セルずれるという、今回の症状とかなり近い報告で、
[ui] host_cursor = "native"が回避策として紹介されている - Herdr Configuration:
host_cursorや設定ファイルの場所など、Herdr の設定を確認できる公式ドキュメント - WezTerm
ime_preedit_rendering:WezTerm 側で IME の未確定文字をどのように描画するかについての公式ドキュメント