はじめに
Arch系のディストリビューションであるEndeavourOSにKDE6をインストールしたのですが、ほぼすべてのアプリケーションで日本語入力を行えるような環境の構築に苦戦したため、メモを残しておきます。
環境
OS: EndeavourOS Galileo Neo
DE: KDE Plasma 6.0.3 (Wayland + Xwayland)
Kernel: 6.8.1-arch1-1-surface
前提
Arch + KDE6 + Wayland(+Xwayland) の環境を想定しているため、これ以外の環境では異なる手順となる可能性があります。
手順
パッケージの導入
まずはpacmanやyay等を用いて、fcitx5-im
とfcitx5-mozc
をインストールします。
fcitx5-im
はFcitx5系のパッケージ4つが含まれています。
$ yay -S fcitx5-im fcitx5-mozc
変換精度を高めたい場合は、代わりにfcitx5-mozc-ut
をインストールして、UT辞書を使用してください1。(ただしバニラMozcよりもビルドに時間がかかります)
途中で表示されるMozcのフレーバー選択では、mozc
ではなくmozc-ut
を選んでください。
$ yay -S fcitx5-im fcitx5-mozc-ut
IBus系パッケージが導入されている場合は削除しておくことをおすすめします。
環境変数の調整
次は/etc/environment
に環境変数XMODIFIERS
の設定を追記し、アプリケーション側にfcitxを使うように指示します。
$ sudo nano /etc/environment
# ... (略) ...
XMODIFIERS=@im=fcitx
XMODIFIERS
にはfcitx5
ではなくfcitx
を指定します。
また、今回はGTK_IM_MODULE
やQT_IM_MODULE
を設定しないでください2。
KDE設定の調整
再起動後、KDE システム設定
を開きます。
左側のメニューからキーボード
>仮想キーボード
を開き、Fcitx 5
を選択します。
(Fcitx 5 Wayland ランチャー…
でも動作します)
左側のメニューから入力メソッド
を開き、入力メソッドを追加…
からMozcをリストに追加します。
必要であれば、この画面にあるグローバルオプションを設定…
からキーバインド等を変更してください。(私は入力メソッドのオン・オフに変換
・無変換
を割り当てています)
もう一度再起動し、日本語入力が行えるようになっていれば成功です。
Chromium/Electron周りの調整
Chromium/Electronを用いたアプリケーションには、追加の引数 --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime
3 を付与しておくことで、より確実な日本語入力を行えます。
$ vivaldi --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime
普段から使用するアプリの場合はデスクトップファイルごと編集しておきます。
# ... 略 ...
Comment[zh_TW]=連線到網際網路
- Exec=/usr/bin/vivaldi-stable %U
+ Exec=/usr/bin/vivaldi-stable --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime %U
StartupNotify=true
# ... 略 ...
-
--enable-features=UseOzonePlatform --ozone-platform=wayland
: XwaylandではなくWaylandネイティブで動くようにする -
--enable-wayland-ime
: Wayland上でIMEを使用できるようにする
おわりに
こちらの環境では、 Vivaldi (Chromium)、Discord (Electron)、Toolbox版のIntelliJ IDEA CE (Java)、Prism Launcher (Qt)、GNOME Calculator (GTK) などのアプリケーションで日本語入力が行えることを確認できました。
ただし、Chromium/Electron系アプリは前述の引数を指定しておかないと、ポップアップウィンドウの位置がずれたり、入力中の内容がアプリウィンドウに組み込まれなかったり、入力した文字の一部が補足されずそのままアプリに流れたりといった具合に、若干挙動が怪しくなります。(入力できないよりはマシ)
もっとスマートな解決法がありそうですが、私が試したのはここまでです。