2023年にリリースされているurxvt
(rxvt-unicode)には、特定のPerlのバージョンがある場合に日本語(を含むUTF-8文字列)を表示できなくなる問題がある。本稿ではその(一時的な)解消方法を提供する。
rxvt-unicode
urxvt
(正式にはrxvt-unicode)は、UNIX環境で動作するターミナルエミュレータである。軽量かつカスタマイザブルであり、いまどきGNOMEやKDEが標準の端末アプリケーションを用意しているにもかかわらず根強いファンが多い。
urxvt
はPerlによる機能拡張を提供しており、XSを通じてフォントサイズの動的な調整などの拡張機能がプラグインとして使えるようになっている。
特定のバージョンで日本語が表示できない
urxvt
のバージョンv9.31またはv9.30 (2023年リリース)には、一定の条件下で日本語を含むUTF-8文字列を正しく表示できないという問題がある。
その条件とは、Perl v5.38.0がインストールされているというものである。どうやら、拡張機能として呼び出されたPerlがロケール情報を壊してしまうらしい。
筆者はopenSuSE Tumbleweedを使っているのだが、これをアップデートしたときに日本語が表示できなくなったことで気付いた。たまたまPerlのバージョンも上がってこうなってしまったらしい。
開発者はこの問題を認識し、パッチを作っている。
対処方法
対処するには大きく2つの選択肢が存在する。できれば両方行うことが望ましいと思う。この処置で筆者の環境はきちんと日本語や記号を表示できるようになった。
urxvt
の更新
最新のバージョンではパッチが既に当てられている。パッケージマネージャが最新バージョンを提供できていない場合は、公式ページの指示に従ってソースコードをダウンロードし手元でビルドすると最新のurxvt
を得られる(ただしcvsを使ってチェックアウトすることになる)。
古式ゆかしいサイトである。開発ありがとう。
Perl設定の排除
設定ファイル(~/.Xresources
)からPerlを呼び出す拡張機能の処理を排除することで当該バグの発現を抑えることができる。
URxvt.perl-ext-common: (ここの部分を何もない空白にする)
関連
perl-5.38.0 がインストールされている環境で、
— s/v (@sockety_v) 2023年7月11日
urxvt をビルドすると、
できあがったバイナリーでは日本語が表示されなくなる問題。
そのパッチがあるらしい
>Patch to work with perl 5.38.0 for UTF-8. https://t.co/KdguEIPYuC