Ubuntu 22.04 LTSのX.Orgセッションで候補ウィンドウが正しい位置に表示されない
今回の問題
(この問題が解決した旨を下に追記しました)
世界のどこかが4月21日のうちに、Ubuntu 22.04 LTSがリリースされます。
どのバージョンのUbuntuでも、せめてインプットメソッド(今回はIBusのこと、以下IM)が正しく動作するように気を配っているつもりではあるのですが、今回も不具合があるままリリースされることになっていました。
Waylandセッションでは特に問題ないのですが、ログイン時にX.Orgセッションを選択し、IBusで文字を入力すると候補ウィンドウが左下に表示されます。
候補ウィンドウが左下に表示される
原因
IBusの場合、GTKアプリケーションを使用していて候補ウィンドウが左下に表示されるということは、適切な設定が行われていないのが原因と考えて間違いないです。
GTK2から、IMを動的に変更できるIMモジュールという仕組みが実装されました。原則としては環境変数GTK_IM_MODULEで指定しますが、GNOMEではGNOME Settigns Daemon(以下GSD)とIBusが統合しており、IBusを使用する場合においてGSDが善きに計らってくれていました(GNOME 41まで。Waylandに関しては42以降も)。
IMモジュールからXIMを使用することもでき(あくまでGTKの場合)、その指定も環境変数XMODIFIERSで行います。
GTK_IM_MODULEが指定されておらず、XMODIFIERSが指定されている場合、今回のように候補ウィンドウが左下に表示されます。
あくまで調査の途中ではありますが、原因はGSDの仕様変更によるものと思われます。
xsettings: Adopt code to look up GTK IM module
keyboard: "Migrate" gtk-im-context setting before giving control to user
これらを読むとわかるのですが(って私も全部を理解しているわけではないのですが)、これまではdconfの"org.gnome.desktop.interface gtk-im-module"が削除されるようになってしまいました。
なお、繰り返しますがWaylandセッションでは特に問題ありません。
ワークアラウンド
トラッキングはされていますが、現段階ではどのように修正すればいいのかわかりません。今後さまざまな議論が行われると思うのですが、修正されるまでこのままというのはアレなので一応のワークアラウンドとして、端末を起動して次のコマンドを実行するのを推奨します。
gsettings set org.gnome.desktop.interface gtk-im-module 'ibus'
このコマンドを実行すると、即座に候補ウィンドウの表示位置が正しくなります。
修正が適用されたら(その場合はここでお知らせします)、端末を起動して次のコマンドを実行してください。
gsettings reset org.gnome.desktop.interface gtk-im-module
あるいは~/.config/.gsd-keyboard.settings-ported
を削除して再起動でもいいです。
これはかなり高い確率で最終的な修正にならないことはご承知おきください。
もちろんFcitx5を使用するというのもありです。
解決
5月18日に提供されたgnome-settings-daemon 42.1-1ubuntu2.1で修正を確認しました。
ただしアップデートのタイミングはさまざまなので、場合によってはお手元の環境での適用まで数日かかるかもしれません。
ワークアラウンドを適用している場合は記載の方法でリセットしてください。そのまま放置しても無害であるはずではありますが。
Discussion
WaylandですがChromium系のブラウザで同じ問題が発生しました。同じ手順で修正できました。
お役に立てて光栄です。考えていませんでしたが、xWaylandで動作しているアプリケーションも同じことになりますね……。