Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

urxvt(rxvt-unicode) v9.31 / v9.30でPerlがv5.38.0のときに日本語が表示できなくなる問題の解消方法

2023年にリリースされているurxvt(rxvt-unicode)には、特定のPerlのバージョンがある場合に日本語(を含むUTF-8文字列)を表示できなくなる問題がある。本稿ではその(一時的な)解消方法を提供する。

rxvt-unicode

urxvt(正式にはrxvt-unicode)は、UNIX環境で動作するターミナルエミュレータである。軽量かつカスタマイザブルであり、いまどきGNOMEやKDEが標準の端末アプリケーションを用意しているにもかかわらず根強いファンが多い。

urxvtのスクリーンショット

urxvtはPerlによる機能拡張を提供しており、XSを通じてフォントサイズの動的な調整などの拡張機能がプラグインとして使えるようになっている。

特定のバージョンで日本語が表示できない

urxvtのバージョンv9.31またはv9.30 (2023年リリース)には、一定の条件下で日本語を含むUTF-8文字列を正しく表示できないという問題がある。

ロケール設定が正しいのに画面がめちゃくちゃになってしまう様子

その条件とは、Perl v5.38.0がインストールされているというものである。どうやら、拡張機能として呼び出されたPerlがロケール情報を壊してしまうらしい。

筆者はopenSuSE Tumbleweedを使っているのだが、これをアップデートしたときに日本語が表示できなくなったことで気付いた。たまたまPerlのバージョンも上がってこうなってしまったらしい。

開発者はこの問題を認識し、パッチを作っている。

www.mail-archive.com

対処方法

対処するには大きく2つの選択肢が存在する。できれば両方行うことが望ましいと思う。この処置で筆者の環境はきちんと日本語や記号を表示できるようになった。

urxvtの更新

最新のバージョンではパッチが既に当てられている。パッケージマネージャが最新バージョンを提供できていない場合は、公式ページの指示に従ってソースコードをダウンロードし手元でビルドすると最新のurxvtを得られる(ただしcvsを使ってチェックアウトすることになる)。

software.schmorp.de

古式ゆかしいサイトである。開発ありがとう。

Perl設定の排除

設定ファイル(~/.Xresources)からPerlを呼び出す拡張機能の処理を排除することで当該バグの発現を抑えることができる。

URxvt.perl-ext-common: (ここの部分を何もない空白にする)

関連

github.com

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?