「がとらぼ」の中の人が常用しているPCのOSはLinuxでKDE neonというディストリビューションです。最新のKDE Plasmaデスクトップ環境が搭載されていること以外はほぼubuntuです。KDE PlasmaではX11からWaylandへの借り換えが進んでいて、まもなく2026年10月のKDE Plasma 6.8ではX11セッション廃止という話が現実となりそうです。
基本的にはX11からWaylandへの以降は順調で、一般的なユーザーにとって、特に英数字圏のユーザーには何が変わるということもなく気付いたら入れ替わっていたということになる筈ですが、日本語環境などインプッドメソッド(IM)が関わるととたんに英数字圏の人たちとは違った問題がでてきます。
今回はLinuxで日本語入力を行う人たちにとっては比較的メジャーなFcitx5をWalandで使う場合の備忘録です。
共通設定
Fcitxを使用使用可能にするにはFcitx関係のパッケージをインストールしてKDEシステム設定から「キーボード」「仮想キーボード」を開き、「Fcitx 5」または、「Fcitx 5 Wayland Launcher(Experimental)」を選択します。KDE neonの更新で異常があったときにはPlasma Keyboardを使用した時期もありましたが、正しく動作しない部分もあったため、「Fcitx 5」「Fcitx 5 Wayland Launcher(Experimental)」が良さそうです。UbuntuやKDE neonではFcitxを動かすための設定は基本的にはこれだけで終わりです。従来とはFcitxの起動方法が違うので、古いドキュメントなどに従って手動でまたは自動でFcitxを起動することは避けます。動作テストとしてFcitxを起動するのは自由です。
ただし、それだけでは使えないものもあるため、以前は./bashrcなどに以下の3行を書きました。
export XMODIFIERS='@im=fcitx5' export GTK_IM_MODULE="fcitx5" export QT_IM_MODULE="fcitx5"
FcitxのWikiのドキュメントUsing Fcitx 5 on Waylandによると以下のようになっています。
GTK_IM_MODULEとQT_IM_MODULEの2行はKDE Plasma 6.7では推奨されなくなったので記載しません。
KDE Plasma 6.7では./bashrcではなく、/etc/environmentに以下の2行を書きます。
XMODIFIERS=@im=fcitx QT_IM_MODULES=wayland;fcitx
従来のQT_IM_MODULEに"S"が付いたQT_IM_MODULESであることに注意が必要です。
ただし、UbuntuのKDE Plasmaデスクトップ環境のWaylandでは、ドキュメントどおりしても効果はなく、後述のfcitxの更新を行うと逆にShiftキーとCtrlキーが効かなくなる modifier/key-release 問題を発生させます。
解決方法は KDE Bug 520566 を参照します。(以下)しかし、それだけではダメでfcitxの更新も必要でした。
Plasma Waylandセッション開始時から入力メソッド環境を設定するためにシステム全体設定として/etc/environmentに設定を作成します。
/etc/environment (ファイルが存在しない場合は新規作成)GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx
/etc/environmentでは、exportや二重引用符は使用しないということになっています。
なお、実際には上記の3行の環境変数を書かなくてもprintenvなどで確認すると設定していない筈のGTK_IM_MODULEやQT_IM_MODULEが設定されています。
どうやらUbuntu系のディストリビューションでFcitx関係のパッケージをインストールすると /etc/X11/Xsession.d/70im-config_launch というファイルが用意されるようです。この中で設定されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # If already tweaked, keep hands off :-) # If im-config is removed but not purged, keep hands off :-) if [ -z "$XMODIFIERS" ] && \ [ -z "$GTK_IM_MODULE" ] && \ [ -z "$QT_IM_MODULE" ] && \ [ -z "$CLUTTER_IM_MODULE" ] && \ [ -z "$SDL_IM_MODULE" ] && \ [ -r /usr/share/im-config/xinputrc.common ]; then IM_CONFIG_PHASE=1 export IM_CONFIG_PHASE # initialize all im-config common functions and parameters . /usr/share/im-config/xinputrc.common unset TEXTDOMAIN unset TEXTDOMAINDIR # source the first found configuration file if [ -r "$IM_CONFIG_XINPUTRC_USR" ]; then . $IM_CONFIG_XINPUTRC_USR elif [ -r "$IM_CONFIG_XINPUTRC_SYS" ]; then . $IM_CONFIG_XINPUTRC_SYS fi # always export variables even for manual configuration. export XMODIFIERS export GTK_IM_MODULE export QT_IM_MODULE export CLUTTER_IM_MODULE export SDL_IM_MODULE fi |
この70im-config_launchはXsession経由でFcitxを使うことを前提としています。重複する設定にはなりますが、前述の/etc/environmentへの設定も行っておきます。/etc/X11/Xsession.d/70im-config_launch ファイルは残しておいて問題ないでしょう。
しかし、このファイルの元であるim-configは要りません。パッケージとして削除するのではなくim-configを無効化します。
$ im-config -n none
コマンドを実行すると ~/xinputrc に run_im none が書き込まれます。(無効化は設定ファイルで永続化されます)
システムを再起動して問題が解決したならこの時点で終わりでも構いませんが、私の環境ではこれだけでは全く効果がありませんでした。そこで、Fcitxを更新することにしました。
Fcitxを5.1.12に更新
Ubuntuでは標準でインストールされるFcitx 5.1.7より新しい5.1.11が用意されています。これはリポジトリを追加して簡単にインストール可能ですが、「zwp_input_method_v2 使用時に modifier key state と key release event が送られない」という問題に対応したとされているのは5.1.12です。それ以降のバージョンも存在します。
Ubuntu用にFcitx 5.1.12パッケージが存在するようですが、それはUbuntu 25.04用として作成されているため、Ubuntu 24.04で直接利用すると依存関係に大きな問題が起きる可能性があります。
そこで、今回は少しだけ面倒ですがビルドして5.1.12を導入することにしました。ソースパッケージは用意されているのでソースにパッチを当てる必要などはなく、大変というものではありませんでした。(以下)
$ sudo apt install build-essential devscripts dpkg-dev #ビルド用パッケージのインストール $ sudo apt build-dep fcitx5 #Fcitx 5用のビルド依存関係パッケージのインストール
Debian/Ubuntu用にFcitx 5.1.12のソースパッケージが用意されているので3つのファイルをダウンロードします。
- fcitx5_5.1.12-2.dsc 3.8 KiB 0a249245ec6f6faa8b9d059ea54055a22f324e609bfe7ce138ae852c279fdb0f
- fcitx5_5.1.12.orig.tar.xz 7.2 MiB 09d7e98a6498136839983caa4b8c1df752deb6933a984e6390557602cab357a0
- fcitx5_5.1.12-2.debian.tar.xz 12.1 KiB d864eb6cd943aba7651303cf5ad3df9102303c70f0bea4070a45a26604df32c7
Ubuntu 24.04(Noble)のソースパッケージ情報を有効にします。
/etc/apt/sources.list.d/ubuntu.sourcesファイルの Type: deb を Type: deb-src に書き換えます。
$ sudo sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources
以下のようになります。
/etc/apt/sources.list.d/ubuntu.sources (修正後)Types: deb deb-src URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb deb-src URIs: http://security.ubuntu.com/ubuntu/ Suites: noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
以下を実行します。
$ sudo apt update $ sudo apt build-dep fcitx5 $ mkdir -p ~/fcitx5-build $ cd ~/fcitx5-build
先に取得した3つのソースパッケージファイル(fcitx5_5.1.12-2.dsc, fcitx5_5.1.12.orig.tar.xz, fcitx5_5.1.12-2.debian.tar.xz)を ~/fcitx5-build にコピー/移動させます。
$ dpkg-source -x fcitx5_5.1.12-2.dsc $ cd ~/fcitx5-build/fcitx5-5.1.12 $ dpkg-checkbuilddeps #依存するパッケージを調査ここで不足するパッケージがあると
dpkg-checkbuilddeps: error: Unmet build dependencies: dh-execのように表示されます。この例ではdh-execが不足していると指摘されています。
$ sudo apt install dh-exec #dh-execパッケージをインストール $ dpkg-checkbuilddeps #依存するパッケージを再調査
他に不足するパッケージが指摘されたら同様にインストールし、何も指摘されなければパッケージの依存関係は満たされています。
ビルドの実行
$ dpkg-buildpackage -b -uc -us
ビルドが始まり画面にはズラズラと表示されます。しばらく待ってエラーで停止しなければ完了です。 最後が以下のように表示されていればビルドは成功です。
**dpkg-deb:** building package 'fcitx5-frontend-all' in '../fcitx5-frontend-all\_5.1.12-2\_all.deb'. Renaming fcitx5-modules-dbgsym\_5.1.12-2\_amd64.deb to fcitx5-modules-dbgsym\_5.1.12-2\_amd 64.ddeb **dpkg-genbuildinfo --build=binary -O../fcitx5\_5.1.12-2\_amd64.buildinfo** **dpkg-genchanges --build=binary -O../fcitx5\_5.1.12-2\_amd64.changes** **dpkg-genchanges:** info: binary-only upload (no source code included) **dpkg-source --after-build .** **dpkg-buildpackage:** info: binary-only upload (no source included)
生成されたパッケージを確認します。
$ cd ~/fcitx5-build $ ls -1 *.debパッケージインストールのシミュレーションを行います。(実際にはインストールされません)
$ sudo apt -s install \
./fcitx5_5.1.12-2_amd64.deb \
./fcitx5-data_5.1.12-2_all.deb \
./fcitx5-modules_5.1.12-2_amd64.deb \
./fcitx5-frontend-all_5.1.12-2_all.deb \
./libfcitx5core7_5.1.12-2_amd64.deb \
./libfcitx5config6_5.1.12-2_amd64.deb \
./libfcitx5utils2_5.1.12-2_amd64.deb
実行結果で削除件数が0であれば問題ないでしょう。
今度はパッケージインストール本番です。(オプションの -s を外して実行します)
$ sudo apt install \
./fcitx5_5.1.12-2_amd64.deb \
./fcitx5-data_5.1.12-2_all.deb \
./fcitx5-modules_5.1.12-2_amd64.deb \
./fcitx5-frontend-all_5.1.12-2_all.deb \
./libfcitx5core7_5.1.12-2_amd64.deb \
./libfcitx5config6_5.1.12-2_amd64.deb \
./libfcitx5utils2_5.1.12-2_amd64.deb
今回インストールしたパッケージが今後のubuntuのパッケージ更新によって上書きされないようピンを追加します。sudoからEOFまで一気にコピペして実行します。
$ sudo tee /etc/apt/preferences.d/fcitx5-local-5112.pref >/dev/null <<'EOF'
Package: fcitx5 fcitx5-data fcitx5-modules fcitx5-frontend-all libfcitx5core7 libfcitx5config6 libfcitx5utils2
Pin: version 5.1.12-2
Pin-Priority: 1300
EOF
インストールされているバージョンと候補のバージョンとプライオリティを確認します。
$ apt policy fcitx5 fcitx5-data fcitx5-modules libfcitx5core7
fcitx5:
インストールされているバージョン: 5.1.12-2
候補: 5.1.12-2
バージョンテーブル:
*** 5.1.12-2 1300
100 /var/lib/dpkg/status
5.1.11-2ubuntu1~noble1 500
500 https://ppa.launchpadcontent.net/ikuya-fruitsbasket/fcitx5/ubuntu noble/main amd64 Packages
5.1.7-1build3 1100
500 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
fcitx5-data:
インストールされているバージョン: 5.1.12-2
候補: 5.1.12-2
バージョンテーブル:
*** 5.1.12-2 1300
100 /var/lib/dpkg/status
5.1.11-2ubuntu1~noble1 500
500 https://ppa.launchpadcontent.net/ikuya-fruitsbasket/fcitx5/ubuntu noble/main amd64 Packages
500 https://ppa.launchpadcontent.net/ikuya-fruitsbasket/fcitx5/ubuntu noble/main i386 Packages
5.1.7-1build3 1100
500 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
500 http://archive.ubuntu.com/ubuntu noble/universe i386 Packages
fcitx5-modules:
インストールされているバージョン: 5.1.12-2
候補: 5.1.12-2
バージョンテーブル:
*** 5.1.12-2 1300
100 /var/lib/dpkg/status
5.1.11-2ubuntu1~noble1 500
500 https://ppa.launchpadcontent.net/ikuya-fruitsbasket/fcitx5/ubuntu noble/main amd64 Packages
5.1.7-1build3 1100
500 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
libfcitx5core7:
インストールされているバージョン: 5.1.12-2
候補: 5.1.12-2
バージョンテーブル:
*** 5.1.12-2 1300
100 /var/lib/dpkg/status
5.1.11-2ubuntu1~noble1 500
500 https://ppa.launchpadcontent.net/ikuya-fruitsbasket/fcitx5/ubuntu noble/main amd64 Packages
5.1.7-1build3 1100
500 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
これでFcitx 5.1.12のビルドとインストールと確認が完了しました。
WaylandではFcitxを手動で起動させないことになっているのでシステムを再起動するなどしてから動作確認を行います。
一応、再起動後にFcitxのバージョンを確認しておきます。
$ fcitx5 --version
5.1.12になっている筈です。
Kate (KDEのエディタ)やKonsole(KDEのターミナル)アプリで日本語を入力したり[Shift]キーを押しながら英数字を入力して大文字や記号が表示されること、[Ctrl]+[A](全選択)、[Ctrl]+[C](コピー)、[Ctrl]+[V](ペースト)、[Ctrl]+[Insert](ペースト)が正しく機能することを確認します。
多くは以上で問題ない筈ですが一部アプリではこれだけでは日本語の入力が行えないことがあります。
Google Chromeブラウザ
Chrome系ブラウザをWaylandネイティブとして起動すると、キーボードからの入力が、KWin / Wayland → Chrome (Ozone Wayland) → Wayland text-input / input-method → Fcitx5に伝わりますが、Wayland + KWin + Fcitx間のmodifier処理の問題で異常動作になるようです。
この経路を KWin → XWayland → Chrome Ozone/X11、つまりX11/XWayland経由に変更することで対応します。

アプリケーションランチャーからGoogle Chromeブラウザのアイコンを右クリックし、表示されたメニューから「アプリケーションを編集」を選択します。

「全般」タブの「コマンドライン引数」の欄に、"--ozone-platform=x11 "を追加します。元々存在していた"%u"の前に挿入します。右上の「保存」を押します。
Android Studio

Android Studioアイコンを右クリックし、表示されたメニューから「アプリケーションを編集」を選択します。

今回は、「環境変数」に"GDK_BACKEND=x11"を入力します。右上の「保存」を押します。
X11ログインセッションが廃止されるPlasma 6.8 (今年10月予定?)以降もXwaylandサポートは残るということなので当分は問題ないでしょう。(たぶん)



















