• Windows Subsystem for Linuxガイド 第24回 WSLgの日本語入力を設定する

WSLgで実現されるLinux GUIアプリ実行環境は、プレーンなLinuxの実行環境なので、そのままでは日本語入力が行えない。UTF-8による日本語の表示に関しては、日本語フォントを設定してやることにより、簡単に行うことが可能だ。

しかし、WSL2は、仮想マシン内で動作するため、Win32側のWindows IMEは利用できず、WSL2ディストリビューション側に日本語入力環境を構築する必要がある。ここでは、その方法を解説する。ただし、WSLgでの日本語入力は、不完全な動作しか行えず、たとえば、変換時のキー割り当てなどを正しく行うことができない。とはいえ、かな漢字変換して入力を行う最低限の動作は可能だ。

なお、この記事では、WSLディストリビューションとしてUbuntu、あるいはUbuntu-22.04 LTSを想定している。Ubuntu系の他のディストリビューションでもほぼ同じ手順が使えるが、他のディストリビューションでも、基本的な考え方は同じだが、パッケージ管理ツーが異なる場合があり、それぞれの環境に合わせてコマンドを指定する必要がある。

Linux GUI環境の日本語入力

X/Waylandを使ったLinuxのGUI環境では、日本語などの入力を行うための仕組みがある。これは、インプットメソッド・フレームワーク(Input Method Framework。以下IMFと略す)とインプットメソッド・エンジン(Input Method Engine。一般にIMEと表記される)から構成(図01)され、それぞれに複数の実装がある。なお、IMFとIMEを合わせてIM(Input Method)と呼ぶこともある。

  • 図01: LinuxのIM(Input Method)は、UIツールキットやXlibがIMF(Input Method Framework)と連携して行う。IME(Input Method Engine)は、純粋に変換処理のみを行う

IMFは、日本語入力の表示とキー入力などを行うもの。テキストの表示にはウィンドウの作成などが必要で、IMFは、UIツールキットやXlibと連携して表示処理やキー入力処理などを行う。IMの起動、切り替えもIMFの担当範囲である。

LinuxのIMEは、純粋に変換機能だけを行う。IMFからキーを受け取り、未変換、変換、確定処理などを行う。ただし、IMEは変換処理とは別に設定や単語登録、辞書管理その他の機能が必要で、これらは別途GUIプログラムとして提供される。

LinuxのGUI環境で日本語入力を行うには、IMFとIMEをインストールする必要がある。ただし、IMFとIMEのインターフェースはIMFごとに異なるためIMFに対応したIMEパッケージとなっており、IMF、IMEの組合せでパッケージをインストールすれば、あとは、パッケージマネージャーが依存関係を解決して必要なパッケージをインストールする。

ここでは、IMFとしてfcitx5をIMEとしてmozcを使う。mozcは、Google日本語入力のオープンソース版で、プログラムとしてはほぼ同じものだが、配布されている辞書などに違いがある。

fcitx5は、もともとは中国語のIMとして開発されたものだが、その後IMFとなり広く使われるようになった。

日本語入力設定の準備

必須ではないが、GUI環境で日本語入力環境を整える前に、WSLディストリビューション自体の日本語化(ロケール設定)を行っておく。これに関しては、「Windows Subsystem for Linuxガイド 第1回 基本編」に解説がある。なお、現在では、systemdが動作しているなら、localectlコマンドを使い、以下のコマンドでロケール設定が可能だ。


sudo apt -y install language-pack-ja
sudo localectl set-locale ja_JP.UTF-8

ロケールの設定後は、念のため、ディストリビューションを再起動しておく。

次に、Windows側のフォントをLinux GUIアプリケーションで利用できるように設定する。そのためには、/etc/fonts/local.confを作成し、Windowsのフォントパス(C:\Windows\Fonts)を指定する。そのためには、以下のコマンドを使う。


cat << 'EOS' | sudo tee /etc/fonts/local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>
EOS

先頭行は、末尾の“EOS”までを読み込むヒアテキストで、2行目からEOSの前の行(最後から2番目の行)までをファイルに書き込むものだ。

設定がうまくいったかどうかは、Xのフォント一覧コマンドfc-listで確認できる。以下のコマンドの出力(wcコマンドの結果)が0でなければ、Win32側のフォントが登録されている。


fc-list | grep Windows | wc

IMF、IMEのインストール

IMFであるfctix5とIMEであるmozcのインストールは、以下のコマンドで行える。


sudo apt install fcitx5-mozc -y

これでfctix5とmozcがインストールされる。次にユーザーのホームディレクトリにある“.profile”の末尾にリスト01のコマンドを追加する。

■リスト01


export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5
export INPUT_METHOD=fcitx5
export DefaultIMModule=fcitx5
if [ $SHLVL = 1 ] ; then
  (fcitx5 --disable=wayland -d --verbose '*'=0 &)
fi

これは、UIツールキットなどに対してIMFとしてfcitx5を使うことを環境変数として伝え、ログイン時にfcitx5を起動するものだ。他の方法もあるが、ユーザーごとにIMF起動を制御できるようにするため、“.profile”を使う方法を選択した。

.profileを書き換えたら、ディストリビューションを再起動するか、ドットソースで.profileを再実行させる。

その後、fcitx5が起動していることを確認する。たとえば、


ps aux | grep fcitx5

などとする。

fcitx5が起動していたら、IMEの設定を行う。コマンドラインから


fcitx5-configtool &

として起動する。

「入力メソッド」タブの左側の領域に“Mozc”と日本語キーボード(通常はOADG 109A)を登録する。右側の領域から対象を検索機能などで選択し、中央の左矢印ボタンで登録を行う。

左側に登録したキーボードを選択して、中央の上下矢印ボタンで「キーボード - 日本語」、「Mozc」の順番に並び替える。「キーボード-英語(US)」を選択して右矢印ボタンで削除する。(写真01)のような状態になったら、適用ボタンで設定を確定させる。

  • 写真01: fcitx5-configtoolでは、「キーボード-日本語」と「Mozc」を写真の順で登録する。登録は右側の領域から選択して中央の左矢印を使う。削除は右矢印である

次に「グローバルオプション」タブに切り替え、「入力メソッドの切り替え」の先頭が「Contrl+スペース」になっていることを確認する。これがLinux GUI環境におけるIME切り替えキーになる。なお、理由は不明だがWSLgでは「全角半角」キーは利用できない。Xのキーボードレイアウト設定などをいろいろと変更してみたが、うまくいかない。WSLg固有の問題と考えられる。

日本語入力を試す

ここでは、geditと呼ばれるエディタプログラムをインストールして、日本語入力を動かしてみる。geditのインストールは、以下のコマンドで行う。


sudo apt install  -y gedit language-pack-gnome-ja

なお、末尾の“language-pack-gnome-ja”は、geditのメニューなどを日本語化するためのリソースである。英語のままでよければ省略してもよい。

“language-pack-gnome-ja”を入れると、geditの起動が遅くなる場合がある。そのときには、以下のコマンドで、依存関係でインストールされている“policykit-1-gnome”をアンインストールする。


sudo apt remove policykit-1-gnome

インストールが終わったらコマンドラインで「gedit &」として起動する(写真02)。ウィンドウが表示されたら、Ctrl+Spaceでmozcに切り替え日本語入力を行ってみる。再度Ctrl+Spaceを打鍵すると、アルファベット入力となる。geditの設定変更はタイトル部右側にあるハンバーガーアイコンから行う。

  • 写真02: 設定が完了すると、Linux GUIアプリケーションでMozcを使った日本語入力が可能になる。Mozcを開くにはCtrl+Spaceを使う

Mozcの設定

Mozcを起動するまでは、IMF側の担当なのでfcitx5-configtoolで設定を行うが、Mozc自体の設定や辞書、単語登録は、mozc_tool(/usr/lib/mozc)で行う。直接起動する場合には、コマンドラインオプションで機能を選択する(表01)。

  • ■表01

GUIで行うなら、前述のfcitx5-configtoolを起動し、「入力メソッド」タブで、Mozcを選択して、中央の「設定」ボタン(下から2番目)でfcitx5のmozc設定ダイアログ(写真03)を開いて、そこから起動する。これは、前述のmozc_toolを起動するもの。

  • 写真03: fcitx5-configtoolの「入力メソッド」タブでMozcを選択し、中央にある下から2番目のボタンを押すとMozc固有設定やツールを開くダイアログが表示される

fcitx5-configtoolでは、Mozc辞書にある単語解説(用例)の表示方法を変更できる。「常に」を選択していると、変換候補ウィンドウが大きくなるが、常に解説が表示される。不要ならば、「ホットキー」を選択すれば、ホットキーを押さなければ用例を表示しなくなる。「フォーカス時」とは、変換候補ウィンドウで対象候補が選択されたときのみ用例を表示する。

どの方法で起動しても、WSLgではMozcの設定は完全には動作しない。起動したダイアログの各タブは動作しているようなのだが、そこからさらにダイアログを開くとほとんどのボタンが効かなくなる。たとえば、「一般」タブの「キー設定」にあるキー設定の選択のドロップダウンリストは動作して、予め定義してあるキー割り当てを変更することはできるが「編集ボタン」を押して表示される、キー割り当てのページ(写真04)では、ボタンを押すことができない。

  • 写真04: Mozcの設定ツール(写真1枚目)を開くとMozcの設定が可能だが、「キー設定 ⇒ キー設定の選択 ⇒ 編集ボタン」を押すとダイアログ(写真2枚目)は開くが、操作がほとんどできない状態になってしまう

残念ながらMozcの設定はバイナリファイル(~/.config/mozc以下にある)なので、設定ファイルをそのまま編集というわけにもいかず、キー割り当てなど、ほとんどをデフォルトのまま使うしかない。

表02に、標準のキー割り当て(MS-IME)の場合の主要なキーのみを示す。カーソルキー、変換キー、とファンクションキーなどで基本的な変換が可能である。

  • ■表02

fcitx5とMozcを使うことで、Linux GUIアプリケーションでも何とか日本語入力が行える。WSLgのIMF、IME対応が完全ではないため、制限を受ける所も多い。ちなみにChromebookでも、WSLgと同様にLinux GUIアプリケーションが動作するのだが、ホスト側のGoogle日本語入力を利用できる仕組みが導入されている。WSLgでも、できれば、Win32側の日本語入力をそのまま利用できるようにして欲しいものである。

Windows Subsystem for Linuxガイド 連載バックナンバー
https://news.mynavi.jp/tag/winsubsystem/