注意
Claude Codeが書いた記事を軽くレビューしただけです。
現状、paruのアップデート時にignoreしている旨が出てくるので、方法1で止めています。
fcitx5 5.1.15のD-Bus通信エラーと解決方法
はじめに
Arch Linuxでfcitx5を使用している環境で、バージョン5.1.15にアップグレードすると日本語入力が完全に動作しなくなる問題が発生しました。同じ問題に遭遇している方のために、原因と解決方法をまとめます。
環境情報:
- OS: Arch Linux (Kernel 6.17.5-arch1-1)
- ウィンドウマネージャ: Hyprland
- ディスプレイサーバー: Wayland
- 日付: 2025-10-26
問題の症状
fcitx5を5.1.15にアップグレードした後、以下の症状が発生しました:
1. fcitx5-remoteが完全に応答しない
$ fcitx5-remote
Failed to get reply.
$ fcitx5-remote -n
Failed to get reply.
2. プロセスは起動しているが通信できない
$ ps aux | grep fcitx5
tagawa 912 0.0 0.0 358336 33116 ? Ssl 14:54 0:00 /usr/bin/fcitx5
$ busctl --user list | grep fcitx
org.fcitx.Fcitx5 912 fcitx5 tagawa :1.16 user@60035.service - -
fcitx5プロセスは実行中で、D-Busサービスも登録されていますが、実際の通信が機能していません。
3. どのアプリでも日本語入力不可
-
Ctrl+Spaceを押してもIMEが切り替わらない - fcitx5-configtoolは起動するが、メイン機能との通信ができない
- 全てのアプリケーション(GTK、Qt、XWayland)で日本語入力が不可能
試したこと(すべて効果なし)
systemdサービスとして再起動
systemctl --user stop fcitx5
pkill -9 fcitx5
systemctl --user start fcitx5
結果: D-Bus通信エラーは解消されず
環境変数の再確認
$ echo $DBUS_SESSION_BUS_ADDRESS
unix:path=/run/user/60035/bus
$ cat /proc/912/environ | tr '\0' '\n' | grep DBUS
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/60035/bus
結果: D-Busアドレスは一致しており、環境変数の問題ではない
fcitx5-diagnoseの実行
診断ツールは全ての設定が正常であることを報告:
- GTK/Qt IMモジュール: 正常
- 全アドオン(DBusアドオン含む): 正常にロード
- 設定ファイル: 問題なし
しかし、D-Bus通信だけが失敗し続けます。
原因の特定
Arch Linux Forumで同様の報告を発見:
- D-Bus communication failures with fcitx5
- Hyprland + Wayland環境で同じ問題が報告されている
- fcitx5 5.1.15の特定のコミットでD-Bus実装に問題が発生した可能性
結論: fcitx5 5.1.15にバグがあり、D-Busインターフェースが正しく機能しない。
解決方法
方法1: ダウングレード(即座の対処)
最も確実で即効性のある方法は、fcitx5を5.1.14にダウングレードすることです。
手順
# downgradeツールを使用(未インストールの場合)
paru -S downgrade
# fcitx5をダウングレード
sudo downgrade fcitx5
リストから 5.1.14-1 を選択します。
downgradeツールは自動的に/etc/pacman.confに以下を追加するか確認します:
IgnorePkg = fcitx5
「Yes」を選択すると、自動アップグレードがブロックされます。
確認
$ fcitx5-remote
2
$ pacman -Q fcitx5
fcitx5 5.1.14-1
D-Bus通信が正常に動作し、日本語入力が復活します。
注意点
この方法では全バージョンのアップグレードがブロックされるため、5.1.16が出ても手動で設定を解除する必要があります。
方法2: pacman hookで5.1.15のみをブロック(推奨)
設定を忘れがちな方や、5.1.16が出たら自動的にアップグレードしたい方向けの方法です。
メリット:
- 5.1.15のみをブロック、5.1.16以上は自動的に許可
- pacman、paru、yay全てで動作
- 設定を忘れても問題なし
1. hookファイルを作成
sudo mkdir -p /etc/pacman.d/hooks
sudo vim /etc/pacman.d/hooks/block-fcitx5-5.1.15.hook
内容:
[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = fcitx5
[Action]
Description = fcitx5 5.1.15へのアップグレードをブロック
When = PreTransaction
Exec = /usr/local/bin/block-fcitx5-5.1.15.sh
AbortOnFail
2. ブロックスクリプトを作成
sudo vim /usr/local/bin/block-fcitx5-5.1.15.sh
内容:
#!/bin/bash
# fcitx5 5.1.15へのアップグレードをブロックし、5.1.16以上は許可
NEW_VERSION=$(pacman -Sp --print-format '%v' fcitx5 2>/dev/null | cut -d'-' -f1)
if [[ "$NEW_VERSION" == "5.1.15" ]]; then
echo ""
echo "========================================="
echo "⚠️ fcitx5 5.1.15はD-Bus問題があります"
echo "========================================="
echo "アップグレードをブロックしました。"
echo ""
echo "5.1.16以上が利用可能になったら、このhookは自動的に"
echo "アップグレードを許可します。"
echo ""
echo "このhookを無効化するには:"
echo " sudo rm /etc/pacman.d/hooks/block-fcitx5-5.1.15.hook"
echo "========================================="
echo ""
exit 1 # アップグレードを中断
else
echo "fcitx5 $NEW_VERSION へのアップグレードを許可"
exit 0 # アップグレードを続行
fi
3. スクリプトを実行可能にする
sudo chmod +x /usr/local/bin/block-fcitx5-5.1.15.sh
4. 既存のIgnorePkgを削除(hook使用の場合)
/etc/pacman.confを編集:
sudo vim /etc/pacman.conf
以下の行を削除またはコメントアウト:
# IgnorePkg = fcitx5
5. 動作確認
# システムアップグレード
paru -Syu
もし5.1.15がリポジトリにある場合、以下のメッセージが表示されます:
=========================================
⚠️ fcitx5 5.1.15はD-Bus問題があります
=========================================
アップグレードをブロックしました。
5.1.16以上が利用可能になったら、このhookは自動的に
アップグレードを許可します。
=========================================
5.1.16以上の場合は自動的にアップグレードが許可されます。
2つの方法の比較
| 設定方法 | IgnorePkg(方法1) | pacman hook(方法2) |
|---|---|---|
| 設定の簡単さ | ★★★ とても簡単 | ★★☆ やや複雑 |
| 特定バージョンのみブロック | ✗ 不可能(全バージョン) | ✓ 可能(5.1.15のみ) |
| 5.1.16が出たら | 手動で解除が必要 | 自動的に許可 |
| 設定を忘れるリスク | 高い | 低い(自動処理) |
| paruでも動作 | ✓ | ✓ |
| yayでも動作 | ✓ | ✓ |
推奨:
- 今すぐ解決したい → 方法1
- 長期的に管理したい → 方法2
pacman hookの仕組み
pacman hookはpacmanのトランザクション処理に介入するため、pacmanを使用する全てのツールで動作します:
paru -Syu
↓
内部でpacmanを呼び出し
↓
sudo pacman -S ... (実際の処理)
↓
pacman hook実行 ← ここでバージョンチェック
↓
5.1.15の場合: exit 1 でブロック
5.1.16以上: exit 0 で続行
このため、paru、yay、pacman全てで同じようにブロックされます。
まとめ
fcitx5 5.1.15にはD-Bus通信の重大なバグがあり、日本語入力が完全に機能しなくなります。
即座の解決策:
paru -S downgrade
sudo downgrade fcitx5
# 5.1.14-1 を選択
長期的な解決策:
- pacman hookを設定して5.1.15のみをブロック
- 5.1.16以上は自動的にアップグレードを許可
- 設定を忘れても問題なし
現在5.1.14で安定動作しており、5.1.16のリリースを待っている状態です。
参考リンク
作成日: 2025-10-26
最終更新: 2025-10-26