Bookworm (Raspberry Pi OS)のChromiumで日本語入力できない現象について

# 概略 :環境と解決案
(2023/12/10 更新)
Rapsberry Pi OSの更新のおかげで、`apt update`+`apt upgrade`すると、OSデフォルトのChromiumで`chromium-browser  --gtk-version=4`が使えるようになってました。
残念ながらオプション無しではfcitx5の日本語変換が動かないままですが、とりあえず一歩前進ということで更新。

記事作成時点で、下記の組み合わせで日本語入力できませんでした。

・ハードウェア: Raspberry Pi 4B 8GB
・OS: Raspberry Pi OS Bookworm with desktop 64bit (2023-10-10-raspios-bookworm-arm64.img.xz)
・日本語環境: fcitx5-mozc
・ブラウザ: Chromium

対策として、下記のいずれかにより日本語を使用できます(一部は見込み、確認中)
[案1]Chromiumの代わりにFirefoxを使う
[案2]raspi-configでWaylandを無効にする
[案3]Chromiumの起動を、ターミナルから`chromium-viewer --ozone-platform=x11`で実行する。
(2023/12/10更新:`apt upgrade`で更新した後に使用可能になってました)
[案4]Chromiumの起動を、ターミナルから`chromium-browser --gtk-version=4`で実行する。
[案5]Chromiumが更新されて日本語入力できるようになるのを待つ

~~※ この記事は作成途中ですが、状況的にすぐにでも情報を得たい人が多そうなのでとりあえず公開します。~~
記事タイトルは回収したので記事完成です。~~当初の目論見とはズレたけど。~~



# 日本語入力できない現象の説明
記事作成時点(2023年10月16日)時点のRaspberry Pi OS最新版)Bookworm)に日本語環境fcitx5-mozcをインストールしたところ、Chromiumで日本語が入力できませんでした。
テキストエディタなどでは半角/全角キーで英語入力から切り替え可能ですが、Chromiumでは英語入力から切り替わりません。

類似事例の記事[^1][^2]や、wiki[^3][^4]によると、この現象は「Chromium」「Wayland」の相性問題で、Chromiumは`text-input-v1`、Waylandは`text-input-v3`と、プロトコルのバージョンが違うため日本語が動作しないそうです。
よって、組み合わせを変えれば日本語の問題を回避できました。
## [案1] Chromium -> Firefox 置き換え 
Bookwormでは、これまで標準で搭載していたChromiumに加えて、Firefoxも搭載されています。
Firefoxはfcitx5-mozcで日本語入力できるので、Chromiumにこだわりがなければこの方法で。
## [案2] raspi-configでWayland無効化
`sudo raspi-config`でWaylandを無効化すると、日本語入力ができるようになります。
```
sudo raspi-config
> # 対話モードで下記の順番に選択 (2023/10/18 追記)
> 6 Advanced Options
> A6 Wayland
> W1 X11
```
ただし、OS全体でWaylandが無効になるため、影響範囲が膨大です。
「他にもWayland関係の問題があって、まとめてOSごとWayland無効化」といった判断はありえそうです。
## [案3] `chromium-browser --ozone-platform=x11`で起動
今のところの本命案。
```
chromium-browser --ozone-platform=x11
```
ほかのアプリではWaylandを使えるようにしつつ、Chromiumだけ日本語のためにWaylandを無効化(してX11で動作)させる。
この方法でも、Chromiumだけとはいえ、せっかく実装されたWaylandが台無しになります。

## [案4]`chromium-browser --gtk-version=4`で実行
とりあえず、`apt update`と`apt upgrade`で環境を更新します。
```
sudo apt update
sudo apt upgrade
```
ついでにwaylandtとX11どちらなのかを確認するアプリもインストールして起動
```
sudo apt install x11-apps

xeyes
```
別ターミナルをつかってchromiumを--gtk-version=4指定で起動。
```
chromium-browser --gtk-version=4

# フラグ書き換えなどでx11が優先されている場合、下記のようにすると一時的にwayrand有効で起動します
# chromium-browser --enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4
```
これでChromiumで日本語入力できました！xeyesの目玉が追っかけてこないのでX11じゃない！！waylandネイティブ！！！！
タイトル回収完了です！！！！

・・・なお、変換候補の表示位置がおかしかったり、いろいろと影響多そうですが把握できてません。
正直この状態で運用するのは高リスクな気がするので、復旧できる準備をしてから試してください。
(性能比較は~~面倒なので~~やりません)

## [案4(旧記載)] `chromium-browser --gtk-version=4` ※過去の忘備録として残します
fcitxのwiki[^3]によると、`--gtk-version=4`のオプションをつけることでGTK_IM_MODULEが使用できます。
しかし、Raspberry Pi OS Bookwormの初期状態ではこのオプションをつけるとエラーで起動すらしません。

(2023/10/18 エラー表示を追記)
```
(process:5693): Gtk-WARNING **: 09:24:10.526: Unable to acquire the address of the accessibility bus: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files. If you are attempting to run GTK without a11y support, GTK_A11Y should be set to 'none'.
[5693:5693:1013/092411.267976:ERROR:chrome_browser_cloud_management_controller.cc(163)] Cloud management controller initialization aborted as CBCM is not enabled.
[5693:5693:1013/092411.469181:ERROR:browser_main_loop.cc(274)] GLib: g_regex_match_full: assertion 'string != NULL' failed
[1013/092411.649291:ERROR:elf_dynamic_array_reader.h(64)] tag not found
[1013/092411.650008:ERROR:elf_dynamic_array_reader.h(64)] tag not found
Segmentation fault
```
おそらくapt installや設定ファイル編集などの下ごしらえが必要で、現在必要な手順を調査、動作確認中です。

---
(2023/10/18 追記)
verboseオプションを使い--gtk-version=4の有無を比較したところ、エラーで起動しない場合だけ下記のログが見つかります。
```
chromium-browser --verbose --gtk-version=4

>[WARNING:browser_main_loop.cc(276)] GLib-GObject: cannot retrieve class for invalid (unclassed) type 'GdkPaintable'
>[WARNING:browser_main_loop.cc(276)] GLib-GObject: cannot retrieve class for invalid (unclassed) type 'GdkPaintable'
>[WARNING:browser_main_loop.cc(276)] GLib-GObject: cannot retrieve class for invalid (unclassed) type 'GdkPaintable'
>[ERROR:elf_dynamic_array_reader.h(64)] tag not found
>[ERROR:elf_dynamic_array_reader.h(64)] tag not found
```
~~しかし、ここからエラー解消するためのとっかかりが見つからず案4は頓挫しています。~~

---

~~ほかに必要な手順が確認出来たら追記します。~~
## [案5]Chromiumの更新を待つ
結局のところChromiumの問題なので、元のアプリケーションが対応をとれば問題解決です。
text-input-v3プロトコルに対応すると、ほかのアプリケーションと同じように日本語が使えるはずです。
このあたり[^5]をみると、すでに問題提起はされているようです。


[^1]:https://gihyo.jp/admin/serial/01/ubuntu-recipe/0717
[^2]:https://pc.watch.impress.co.jp/docs/column/ubuntu/1524498.html
[^3]:https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland
[^4]:https://wiki.archlinux.jp/index.php/Fcitx5
[^5]:https://bugs.chromium.org/p/chromium/issues/detail?id=1039161