✍️

Google Chrome 135以降とGNOMEの組み合わせで、今までとインプットメソッドの挙動が変わるのは何故か。

に公開
2

Google Chrome編

Ubuntu上で、先日リリースされたGoogle Chrome 135にアップデートすると、インプットメソッド(デフォルトはIBus)の挙動が変わります。
候補ウィンドウが変なところに出るのだが
候補ウィンドウがあまり嬉しくないところに表示されます。

これは、新し目のGNOME(42以降)でGoogle Chrome 135以降を起動すると、強制的にGTK4を使用するようになるからです。Xセッションだと、たぶんおかしなところには表示されません(未確認)。
Fcitx5を使用している場合は、Input Method Panelを有効にしていれば候補ウィンドウが正しい位置に表示されます。

該当のコミット

GTK4をデフォルトにするのはいいのですが、GTK3にフォールバックすることは、Google Chrome 135ではできません。136以降では、--gtk-version=3というオプションを追加すれば、GTK3を使用できます。

--gtk-verion=3を追加した

135までは、--gtk-version=4しか有効ではありませんでした。なんだそれ。

該当のコミット

というわけで、136がstableになる今月末にはこれで対応できるので、過渡期時な問題ではありますが、では136が出るまではどうすればいいのかというと、

  1. 今月中はGoogle Chrome Betaを使用し、前述のオプションを追加する
  2. Fcitx5+Input Method Panelにする
  3. Google Chrome 134に戻す(ググったら出てくるようです)

が考えられます。めんどくさいですね!

snapパッケージ版Chromium

snapパッケージ版Chromiumにも同様の問題があります。こっちはさらにめんどくさいことになっています。

snapcraft.yamlを見てみましょう。

apps:
  chromium:
    extensions: [gnome]

gnome extensionは有効になっています。これによってIBusやFcitxでの入力が可能になっています(たぶん)。こいつの中身を見てみましょう。

debs:
    after: [ gnome-sdk ]
    plugin: nil
    stage-packages:
      - fcitx-frontend-gtk3
(中略)
      - ibus-gtk3

というわけで、そもそもGTK4で入力することが考慮されていません。そこから修正が必要です。

Chromiumはソースコードが公開されているので、自前でビルドすればいいのですが、うちだとだいぶ前からビルドが通ってません。どうやってリリースしてるんだろう……。

4/8追記

入力とは別の問題があったらしく、GTK4の強制は無効化されることになりそうです。しかしこの修正はもう少しどうにかならなかったのかなと思いますが……。

Google Chrome 136ではどうなったのか

5/2追記
先日Google Chrome 136.0.7103.59がリリースされました。変更点のログを読むと、いろいろな変更点がありました。

  • GTK4での候補ウィンドウの表示位置がおかしな問題が修正された
  • text-input-v3がデフォルトに
    • Wayland使用時ですが
  • text-input-v3使用時はGTK4での入力を無効に
    • 今までは両方有効になっていた模様。日本語では特に影響なし

というわけで、次のようなまとめになります。

  • GTK4に対応したインプットメソッド(IBus/Fcitx5等)を使用している場合は、なにもしなくてもOK
  • GTK4に対応していないインプットメソッド(uim/Fcitx等)を使用している場合は、起動オプションに--gtk-version=3をつけて起動する
  • WaylandセッションだからといってChromeがWaylandネイティブで起動するとは限らないので、要注意。詳しくはUbuntu Weekly Recipe 第859回にて

Discussion

tomotomo

同様の問題が fcitx5 + X11 で起きています。Chrome(Chromium)を134までロールバックすると治るので同じ原因かと思われます。
私のX11環境では、Fcitx5 + Input Method Panelでも同じくズレてしまいますね...

あわしろいくやあわしろいくや

Fcitx5での動作は確認していませんが、136以降にアップデートすると修正されると思います。