AppImage 版 Viber で fcitx5 を使って日本語入力できるようにする

結論から書くと、QT_IM_MODULE=ibus と IBUS_USE_PORTAL=1 の 2 つを付けて起動したら、fcitx5 のまま AppImage 版 Viber で日本語入力できるようになりました。

普段は Linux Mint(Cinnamon、X11 セッション)で、fcitx5 + Mozc を使って日本語入力しています。Viber だけは日本語が入力できなくなってしまった。

以前も一度解決したのですがどうも fcitx を fcitx5 に Upgrade したことがきっかけで日本語入力ができなくなってしまったようです。

Viber は Qt6 製で、AppImage の中に Qt 一式と ibus 用の入力プラグインが同梱されています。fcitx 用のプラグインは入っていないので、いわば「ibus にしか対応していないアプリ」です。

Claude に聞いてみると素直に ibus を使えば問題ないようですが確認していません。Linux Mint では fcitx がデフォルトですのでできれば替えたくないです。なので解決していきます。

環境はこうなっています。

項目内容
OSLinux Mint 22.3(Cinnamon / X11)
入力メソッドfcitx5 5.1.7 + fcitx5-mozc
対象アプリViber(AppImage、同梱 Qt 6.7.3)

原因

原因は、Qt の ibus プラグインが「ibus-daemon の実行ファイルがあるか」を確認していたことでした。

Qt の ibus プラグインの接続の流れ

Qt の ibus プラグインは、だいたい次のように動くようです。

  1. IBUS_USE_PORTAL が設定されているか、Flatpak の中で動いているかを見る
  2. どちらでもなければ通常モードになり、PATH に ibus-daemon があるかを確認する
  3. 見つからなければ、無効のまま何もしない
  4. 見つかれば、アドレスファイルを読んで接続する

同梱のプラグインのバイナリを grep してみると、ibus-daemon や IBUS_USE_PORTAL という文字列が入っていました。動きとも一致しているので、たぶんこれで合っていると思います。

fcitx5 は ibus のふりができる

そもそもの前提として、fcitx5 には IBus Frontend というアドオンがあります。これが ibus 互換の D-Bus インターフェースを提供して、~/.config/ibus/bus/ にアドレスファイルも書いてくれます。なので、ibus 専用のアプリから見ると、fcitx5 が ibus のように見えるわけです。

対策

IBUS_USE_PORTAL=1 を付けて、プラグインを portal モードで動かすことにしました。portal モードでは ibus-daemon の有無を確認せず、org.freedesktop.portal.IBus に接続しに行きます。このサービス名は fcitx5 の IBus Frontend が持っているので、そのまま fcitx5 につながります。

起動用のスクリプトは、最終的に次のようになりました。

#!/bin/bash
IBUS_USE_PORTAL=1 QT_IM_MODULE=ibus /opt/viber/viber.AppImage

Comments

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です