3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Flatpak で Fcitx が動かない問題

Last updated at Posted at 2020-02-27

ディストリビューション非依存のパッケージマネージメントシステムとして、Flatpakというものがあります。

このFlatpak、ユーザー権限でバイナリパッケージを手軽にインストールできたりして、Gentoo使いの自分としては便利に使っているのですが、一つ問題があります。それは、日本語入力ができない、という問題です。

正直そんなに日本語入力する機会なんてないし…と思っていましたが、最近チャットツールとかを導入したせいで、日本語を入力する必要に迫られていました。とりあえずは、ブラウザでWeb版を開いてなんとかしていたんですが、重い腰を上げて解決策を探ってみることにしました。

原因

あちこち調べた結果、日本語入力ができない問題は、FcitxとFlatpakアプリとの間で、D-Bus通信がうまく行っていないことが原因とわかりました。

なぜ通信がうまく行っていないのか。その原因は2つありました。1つ目は権限の問題です。
Flatpakはセキュリティにも配慮していて、アプリケーションをサンドボックスに押し込んで実行するようになっています。当然、各種通信やアクセスも制限しています。そうした制限の一部として、ソケット通信も制限されています。D-Busはリンク層としてはソケット通信を行っているので、当然この制限の影響を受けます。

解決策

そのため、この「ファイアウォール」に穴を開ける必要があります。
調べてみるといい感じのIssueがありました。どうやら--talk-name=org.freedesktop.portal.Fcitxと実行時に指定すれば良いようです。恒久的に設定したければ、overrideすればよさそうです。

さて、問題はまだ続きます。
D-Bus通信は、その名の通りバス型の通信システムなので、「宛先」(正確にはオブジェクト名)を指定する必要があります。その「宛先」の命名規則には慣例があって、だいたいのアプリケーションはその慣例に従っていたわけですが、Fcitxはその慣例に従っていませんでした。しかし、Fcitxでのこの修正によって、慣例通りに振る舞うようになりました。
その結果、以前の振る舞いを前提としていた一部のFlatpakアプリでFcitxが動かなくなってしまったのでした。この問題はFcitx側でもすでに把握しています。

解決策は、アプリケーション側が対応してくれるのを待つか、Fcitxにパッチが当たるのを待つか、です。しかし、Fcitx側での修正は、影響範囲が広く、かつ挙動を正しく修正した結果による挙動なため、修正は難しいように思います。

めんどくさいので諦めた

ここまで書いておいて申し訳ないですが、自分はとりあえずiBusに逃げることにしました
だって日本語そんなに打たないんだもの…

以上、Flatpakで日本語入力できなくて困っている方の役に立てれば幸いです。

参考資料

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?