WSL2にFcitx+Mozcを入れて日本語入力する

2020年8月14日WSL 2Linux,Ubuntu,Windows,WSL2

WSL2にFcitx+Mozcを入れて日本語入力する

先日、WSL2(Windows Subsystem for Linux)環境のUbuntu 20.04でGUIアプリが動くように設定して、日本語を表示できるようにしましたが、よくよく考えたら日本語入力の設定をしてませんでした。

今回は、WSL2環境にFcitxとMozcをインストールして、日本語入力できるようにしてみたいと思います。

最初にまとめ

忙しい人向けにBashスクリプトにまとめてみました。

MicrosoftストアからインストールしたばかりのまっさらなUbuntuからスタートする場合、こちらのスクリプトを実行すれば一通り日本語入力ができるようになります。ただし、GUIアプリを動かすにあたってWindows側でのVcXsrvの設定も必要です。詳細はこちらの記事の「Windows側にXサーバーをインストール」をご覧ください。

#!/bin/bash
# Copyright (c) 2020 astherier
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
#
#WSL2のUbuntu 20.04にFcitx+Mozcをインストールします。

# https://astherier.com/blog/2020/07/install-wsl2-on-windows-10-may-2020/
#WSL環境の各パッケージをアップデートします。
sudo apt update -y
sudo apt upgrade -y

# https://astherier.com/blog/2020/08/run-gui-apps-on-wsl2/
#GUIアプリを動かすため、いくつかソフトを入れて設定します。
#Windows側の設定も必要です。詳細は上記リンクを見てください。
sudo apt install -y libgl1-mesa-dev xorg-dev xbitmaps x11-apps
echo 'export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '\''{print $2}'\''):0.0 #https://astherier.com/blog/2020/08/run-gui-apps-on-wsl2/' >> ~/.profile
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> 
<!-- Created by https://astherier.com/blog/2020/08/run-gui-apps-on-wsl2/ -->
EOS

# https://astherier.com/blog/2020/08/install-fcitx-mozc-on-wsl2-ubuntu2004/
#日本語の言語パックをインストールします。
#これにより、コマンドのエラーメッセージなども日本語になります。
sudo apt -y install language-pack-ja
sudo update-locale LANG=ja_JP.UTF8

# https://astherier.com/blog/2020/08/install-fcitx-mozc-on-wsl2-ubuntu2004/
#FcitxとMozcをインストールし、関連の設定をします。
sudo apt install -y fcitx-mozc dbus-x11
sudo sh -c "dbus-uuidgen > /var/lib/dbus/machine-id"
cat << 'EOS' | tee -a ~/.profile
#Added by https://astherier.com/blog/2020/08/install-fcitx-mozc-on-wsl2-ubuntu2004/
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx
if [ $SHLVL = 1 ] ; then
  (fcitx-autostart > /dev/null 2&>1 &)
  xset -r 49  > /dev/null 2&>1
fi
#end
EOS

echo "
一旦、WSL2を終了してください。コマンド:wsl.exe -t ディストリ名
もう一度WSL2を起動して、fcitx-config-gtk3で設定の確認をしてください。
  ・Input Method(入力メソッド)にMozcを足す
  ・Global Config(全体の設定)のTrigger Input MethodにZenkakuhankakuもセットする
"

このスクリプトを使用した方は、次に「再起動して設定を確認」へ進んでください。

ここからは、一つずつコマンドを打ちながら設定していく人向けに説明します。

GUIアプリが動くところまで

まだWSL2をインストールしていない方は、こちらの記事をご覧ください。

次にGUIアプリが動くように設定していきます。GUIアプリ動作環境の構築は、こちらの記事をご覧ください。

Ubuntuを日本語化する

Ubuntuの日本語化を行います。

これは必須ではありませんが、日本語化を行っておくと、次回WSLを起動したときに自動的にMozcを使うよう設定してくれるみたいです。

$ sudo apt -y install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF8

これらのコマンドを実行すると、コマンドのエラーメッセージやChromeなども日本語表示になります。

fcitx-mozcのインストール

日本語入力ソフトのfcitx-mozcと関連ソフトをインストールします。

$ sudo apt install -y fcitx-mozc dbus-x11

次に、machine-idファイルを作成します。

$ sudo sh -c "dbus-uuidgen > /var/lib/dbus/machine-id"

続いて、環境変数などを.profileファイルに設定します。

$ cat << EOS | sudo tee -a ~/.profile
#Added by https://astherier.com/blog/2020/08/install-fcitx-mozc-on-wsl2-ubuntu2004/
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx
if [ $SHLVL = 1 ] ; then
  (fcitx-autostart > /dev/null 2&>1 &)
  xset -r 49  > /dev/null 2&>1
fi
#end
EOS

環境変数については、参考サイト[1]を参考にしました(ただし、DISPLAY変数はGUIアプリ設定のところで設定済みなので削除しています)。if文の1行目はFcitxをスタートするコマンド、2行目は半角全角キーの連打を抑制するものです。if文の所は参考サイト[2]を参考にしました。

以上でインストール完了です。

再起動して設定を確認

インストールが完了したら、設定を反映させるため一旦WSLを再起動します。(いろいろ試したところ、WSLを再起動しないとうまく動かないみたいでした)

WSLを終了するためPowerShellかコマンドプロンプトから次のコマンドを実行します。Ubuntu-20.04の部分はディストリビューション名です。Microsoftストアから「Ubuntu」アプリをインストールしている場合は、代わりにUbuntuと入力してください。

PS C:\> wsl.exe -t Ubuntu-20.04

もう一度WSL2のUbuntu 20.04を起動します。

入力設定確認のため、fcitx-config-gtk3を実行します。(警告は無視して大丈夫だと思います)

$ fcitx-config-gtk3

こちらで入力メソッドの設定をします。

まず「入力メソッド」タブでMozcが指定されているか確認してください。ない場合は、下のプラスボタンで足してください(日本語化してからインストールした方は既に設定されていると思います)

続いて、「全体の設定」タブでTrigger Input MethodにZenkakuhankakuが指定されているか確認してください。Emptyになっている場合は、そこをクリックして半角全角キーを押すと、半角全角キーで入力切り替えできるようになります。(こちらも、日本語化した人は設定済みだと思います)

設定が終わったら、×を押して閉じます。

動作の確認

以上で日本語入力の設定は完了です。

動作確認のため、試しにLXTerminalをインストールしてみます。

$ sudo apt install lxterminal

インストールが終わったら、LXTerminalを起動してみます。

$ lxterminal

半角全角キーを押して、日本語入力ができたら設定完了です。お疲れ様でした。

参考サイト

この記事は、こちらのサイトを参考にさせていただきました。

参考サイト[1]

参考サイト[2]

おまけ

Google Chromeをインストールすれば、Chrome上でも日本語が打てるようになります。