Unable to keep Input Method running

はじめに

Fedora 39 KDE Plasma Wayland で fcitx5 を使ってるとこんなエラーが出た.特に支障なかったのでしばらく放置してたが,せっかくなので(?)原因調査した痕跡を残す.

メッセージ内容

今回 Fcitx 関連の2つのメッセージが表示された.

GTK_IM_MODULE と QT_IM_MODULE が設定され,Wayland 入力メソッドフロントエンドが動作していることを検出しました.GTK_IM_MODULE と QT_IM_MODULE の設定を解除し,代わりに Wayland 入力メソッドフロントエンドを使用することをお勧めします.

Unable to keep Input Method running

Giving up to bring the process up because main Input Method process for fcitx5 rapidly died many times. See XDG_CACHE_HOME/imsettings/log for more details.

Fcitx 5 on KDE Plasma Wayland

KDE Plasma で fcitx5 を利用する場合,システム設定から仮想キーボードに fcitx5 を指定するよう説明されている.

Using Fcitx 5 on Wayland - Fcitx

そのため IM の設定では none.conf を指定することで,システム設定から fcitx5 を起動するような設定となっている.

$ imsettings-info 
Xinput file: /etc/X11/xinit/xinput.d/none.conf
GTK+ immodule: gtk-im-context-simple
Qt immodule: xim
XMODIFIERS: @im=none
XIM server:  
Preferences:  
Auxiliary:  
Short Description: none
Long Description: 
Icon file: imsettings-unknown
Is system default: FALSE
Is user default: FALSE
Is XIM server: FALSE

$ cat /etc/X11/xinit/xinput.d/none.conf
XIM=none
XIM_PROGRAM=
XIM_ARGS=
GTK_IM_MODULE=gtk-im-context-simple
QT_IM_MODULE=xim
IMSETTINGS_IGNORE_ME=yes
# We don't take care of GNOME and Plasma Wayland
IMSETTINGS_IGNORE_SESSION=GNOME,GNOME-wayland,KDE-wayland

しかしながら環境変数見ると none.conf で設定したはずものが上書きされている.

$ env | grep IM
IMSETTINGS_INTEGRATE_DESKTOP=yes
IMSETTINGS_MODULE=fcitx5
QT_IM_MODULE=fcitx
XDG_RUNTIME_DIR=/run/user/xxxx

なんやかんやで,どうやらこの設定ファイル存在しているせいで,システム設定と IM 設定でそれぞれ fcitx5 を起動しようとしていたっぽい.環境変数 QT_IM_MODULE は KDE Plasma では設定してはいけないことになっているが,GNOME では必要とされている.GNOME 使わない人はファイルを削除すれば解決.GNOME も Wayland も使いたい人はこのスクリプトをちょっと手直ししてあげる必要がありそう.

$ cat ~/.config/imsettings/xinputrc 
XIM=fcitx5
XIM_PROGRAM=/usr/bin/fcitx5
ICON="fcitx5"
XIM_ARGS="-D"
PREFERENCE_PROGRAM=/usr/bin/fcitx5-configtool
SHORT_DESC="fcitx5"
GTK_IM_MODULE=fcitx
if test -f /usr/lib/qt4/plugins/inputmethods/qtim-fcitx5.so || \
   test -f /usr/lib64/qt4/plugins/inputmethods/qtim-fcitx5.so || \
   test -f /usr/lib/qt5/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so || \
   test -f /usr/lib64/qt5/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so;
then
    QT_IM_MODULE=fcitx
else
    QT_IM_MODULE=xim
fi

# workaround for gnome users
if [ "$XDG_SESSION_DESKTOP" = "gnome"  ]; then
    /usr/bin/systemd-run --user --unit=$XIM $XIM_PROGRAM $XIM_ARGS
fi

コメント

タイトルとURLをコピーしました