はじめに (対象読者・この記事でわかること)

この記事は、Chrome OSのCrostini機能を使ってKali Linuxを実行し、GUIアプリケーションで日本語入力を行いたい方を対象としています。特に、fcitx5-mozcやibus-mozcをインストールしても、日本語入力に切り替えられないという問題に直面している方向けです。

この記事を読むことで、Crostini環境での日本語入力の仕組み、なぜ通常の方法では動作しないのか、そして実際に日本語入力を可能にするための具体的な設定方法が理解できます。また、WaylandとX11の違い、環境変数の設定方法についても学ぶことができます。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。 - Linuxの基本的なコマンド操作 - Chrome OSのCrostini機能の基本的な使い方 - エディタでのテキストファイルの編集方法

Crostiniの特殊性:なぜ日本語入力が難しいのか

CrostiniはChrome OS上でLinuxコンテナを動作させる仕組みで、通常のLinux環境とはいくつか異なる特徴があります。特に重要なのは、GUIアプリケーションの表示方法です。

Crostiniでは、Linuxコンテナ内のGUIアプリケーションは、Waylandプロトコルではなく、X11プロトコルを経由して表示されています。これは、Chrome OS側のSommelierというコンポーネントがX11サーバーとして動作し、コンテナ内のアプリケーションからの描画命令を受け取って処理するためです。

このため、コンテナ内で動作するIME(Input Method)も、X11ベースで動作する必要があります。しかし、最近のLinuxディストリビューションでは、Waylandがデフォルトになっており、それに合わせてIMEもWayland対応の実装になっています。これが、fcitx5やibusが正常に動作しない根本的な原因です。

具体的な解決手順:X11ベースでの日本語入力環境構築

それでは、実際にCrostini上のKali Linuxで日本語入力を可能にするための手順を説明します。ここでは、ibus-mozcを使った方法を解説します。

ステップ1:必要なパッケージのインストール

まず、ibusとmozc、そしてX11用の設定ファイルをインストールします。

Bash
sudo apt update sudo apt install -y ibus ibus-mozc im-config

これに加えて、GTKとQT用のibusモジュールもインストールします:

Bash
sudo apt install -y ibus-gtk ibus-gtk3 ibus-qt4

ステップ2:環境変数の設定

次に、X11ベースでibusを動作させるための環境変数を設定します。ここが最も重要なステップです。

~/.xsessionrcファイルを作成または編集します:

Bash
nano ~/.xsessionrc

以下の内容を追加します:

Bash
export GTK_IM_MODULE=ibus export QT_IM_MODULE=ibus export XMODIFIERS="@im=ibus" export DefaultIMModule=ibus

これらの環境変数は、GTKアプリケーション、QTアプリケーション、そしてX11ベースのアプリケーション全てでibusをIMEとして使用することを指定します。

ステップ3:ibusのデーモン起動と設定

ibusのデーモンを起動します:

Bash
ibus-daemon -drx

次に、ibus-setupでmozcを追加します:

Bash
ibus-setup

「Input Method」タブをクリックし、「Add」ボタンから「Japanese」→「Mozc」を選択して追加します。

ステップ4:Crostini用の特別な設定

Crostini環境では、通常の方法ではibusが正しく動作しないため、追加の設定が必要です。~/.sommelierrcファイルを作成します:

Bash
nano ~/.sommelierrc

以下の内容を追加:

Bash
export DISPLAY=:0 export GTK_IM_MODULE=ibus export QT_IM_MODULE=ibus export XMODIFIERS="@im=ibus"

これにより、Sommelier経由でアプリケーションが起動する際にも、正しい環境変数が設定されます。

ハマった点やエラー解決

多くの方が「ibus-setup」でmozcを追加しても、実際に切り替えができないという問題に直面します。これは、ibusがWaylandセッションで動作しているためです。

echo $XDG_SESSION_TYPEを実行して、waylandと表示される場合、これが問題の原因です。

また、ibus engineコマンドを実行しても、何も出力されない(またはxkb:us::engなどのみが表示される)場合、ibusが正しく設定されていません。

解決策

最も確実な解決策は、X11セッションでログインすることです。しかし、Crostiniではこれができないため、代わりの方法を使います。

  1. まず、ibusを再起動します:
Bash
ibus exit ibus-daemon -drx --panel /usr/lib/ibus/ibus-ui-gtk3
  1. 次に、明示的にmozcエンジンを設定します:
Bash
ibus engine mozc
  1. これで切り替えが可能にならない場合は、以下のスクリプトを作成して実行します:
Bash
cat << 'EOF' > ~/start-ibus.sh #!/bin/bash export GTK_IM_MODULE=ibus export QT_IM_MODULE=ibus export XMODIFIERS="@im=ibus" ibus-daemon -drx --panel /usr/lib/ibus/ibus-ui-gtk3 sleep 2 ibus engine mozc EOF chmod +x ~/start-ibus.sh ~/start-ibus.sh
  1. 最後に、日本語入力をテストします:
Bash
ibus-test

このコマンドで日本語入力が可能になれば成功です。その後、通常のアプリケーションでも日本語入力が可能になります。

まとめ

本記事では、Crostini上のKali LinuxでGUIアプリケーションで日本語入力を行うための方法を解説しました。

  • CrostiniはX11プロトコルを使ってGUIを表示している
  • そのため、Wayland対応のIMEをそのままでは使えない
  • 環境変数を正しく設定し、ibusをX11ベースで動作させる必要がある
  • ~/.xsessionrc~/.sommelierrcの両方で環境変数を設定する

この記事を通して、Crostiniの特殊性を理解し、それに適した日本語入力環境を構築できるようになりました。 今後は、他のIME(fcitx5など)での実装方法や、より簡単な設定方法についても記事にする予定です。

参考資料