28 August 2021

Windows 10バージョン21H1でのWSL2のGUI日本語化

WSL2をインストール(『Windows 10バージョン21H1でのWSL2インストール』)した後、GUIの日本語化を行う。

X Server

WSLgが使える場合は、追加ソフトや設定の必要はない。WSLgが使えないWindows 10 Version 22H2以前の場合はサードパーティのX Serverのインストールが必要。

WSLgが使える場合

追加設定は不要。サードパーティ製X Serverの場合に手動設定が必要だった環境変数DISPLAYは、デフォルトで次のように表示されるはずだ

$ printtenv DISPLAY
:0

WSLgのX Serverの情報をダンプするとこんな感じ

WSLのUbuntuシェル
$ xrandr --verbose
Screen 0: minimum 16 x 16, current 1920 x 1080, maximum 32767 x 32767
XWAYLAND0 connected 1920x1080+0+0 (0x41) normal (normal left inverted right x axis y axis) 476mm x 268mm
        Identifier: 0x21
        Timestamp:  7169
        Subpixel:   unknown
        Gamma:      1.0:1.0:1.0
        Brightness: 0.0
        Clones:
        CRTC:       0
        CRTCs:      0
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter:
        non-desktop: 0
                supported: 0, 1
  1920x1080 (0x41) 173.000MHz -HSync +VSync *current +preferred
        h: width  1920 start 2048 end 2248 total 2576 skew    0 clock  67.16KHz
        v: height 1080 start 1083 end 1088 total 1120           clock  59.96Hz
  1440x1080 (0x42) 129.000MHz -HSync +VSync
~ 以下省略

VcXsrvのインストールと初期設定

Windows 21H1ではWSLgがまだ提供されていないので、VcXsrv Windows X Server(https://sourceforge.net/projects/vcxsrv/)を用いる。

VcXsrvはスタートメニューにXLaunchという「起動条件を設定するランチャー」が登録されるので、通常はこれをクリックして起動する。

毎回同じ起動条件を選択するのがめんどくさく、クリック1つで起動したいのなら、vcxsrv.exeのショートカットを作り起動条件のオプションを書き込んでおけばよい(公式ドキュメントより)。

VcXsrvを標準設定で起動するショートカット
"C:\Program Files\VcXsrv\vcxsrv.exe" -multiwindow -clipboard  -wgl -ac
  • -multiwindow : Run the server in multi-window mode
  • -clipboard : Enable [disable] the clipboard integration. Default is enabled
  • -wgl : Enable the GLX extension to use the native Windows WGL interface for hardware-accelerated OpenGL
  • -ac : disable access control restrictions

WSLで起動したUbuntuシェル内で、VcXsrvをX Serverとして認識させるため、環境変数 DISPLAY を設定する。毎回手動で入力するのはめんどくさいので、~/.profile スクリプトの末尾に次のように記述しておく

~/.profile
# X Server
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0

Ubuntuシェルを再起動して、環境変数がちゃんと設定されているか念のため確認

WSLのUbuntuシェル
$ printenv DISPLAY
172.29.16.1:0.0

geditなど、GUIプログラムを起動すると、VcXsrvの初回アクセス時にWindows Defender ファイアウォールの設定ダイアログが一度だけ表示される。

必ず、パブリックネットワークからのアクセスも有効にすること。

20210828-vcxsrv-firewalldlg.jpg
"Windows Defenderファイアウォールの設定ダイアログ

もし、ここでパブリックネットワークのアクセスを無効のままとした場合は、Windows Defender ファイアウォールのコントロールパネルを開き、VcXsrvの受信規則を全て有効化すればよい。

20210828-vcxsrv-firewall.jpg
Windows Defender ファイアウォールの受信規則でVcXsrvをすべて有効化する

GUIアプリケーションのアイコンが少し変

アイコンが、通常のUbuntuのデスクトップテーマ(Yaru)ではなく、モノクロ版になっている...

20220102-wslg-nautilus.jpg

yaru-theme-gtk, yaru-theme-icon パッケージをインストールし、gnome-tweaksアプリケーションで外観設定すれば変更は可能。(AdwaitaからYaruに変更)

Ubuntu 20.04の日本語化

日本語版の言語サポートをすべて有効化

現在有効化されている言語サポートのパッケージと、これからインストール可能なパッケージを表示して確認する。既にインストール完了した時点での表示なので、 --show-installed で表示されているパッケージをすべてインストールすればよいことになる

WSLのUbuntuシェル   (インストール済みの言語パッケージの表示)
$ check-language-support --show-installed
fcitx fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt5 fcitx-mozc fcitx-ui-classic fonts-noto-cjk fonts-noto-cjk-extra gnome-user-docs-ja ibus-mozc language-pack-gnome-ja language-pack-ja mozc-utils-gui
WSLのUbuntuシェル   (未インストールの言語パッケージの表示)
$ check-language-support -l ja
  ← 何も表示されなければ、すべてインストール済みを示す

日本語の言語サポートのすべてのパッケージをインストールする

WSLのUbuntuシェル
$ sudo apt install -y $(check-language-support -l ja) language-pack-ja

環境変数を日本語対応に切り替える

WSLのUbuntuシェル
$ sudo update-locale LANG=ja_JP.UTF8

Ubuntuシェルを再起動して環境変数が切り替わっているのを確認する

WSLのUbuntuシェル
$ locale
LANG=ja_JP.UTF8
LANGUAGE=
LC_CTYPE="ja_JP.UTF8"
LC_NUMERIC="ja_JP.UTF8"
LC_TIME="ja_JP.UTF8"
LC_COLLATE="ja_JP.UTF8"
LC_MONETARY="ja_JP.UTF8"
LC_MESSAGES="ja_JP.UTF8"
LC_PAPER="ja_JP.UTF8"
LC_NAME="ja_JP.UTF8"
LC_ADDRESS="ja_JP.UTF8"
LC_TELEPHONE="ja_JP.UTF8"
LC_MEASUREMENT="ja_JP.UTF8"
LC_IDENTIFICATION="ja_JP.UTF8"
LC_ALL=

タイムゾーンを「東京」に変更する。設定後、dateコマンドなどでJSTと表示されればOK

WSLのUbuntuシェル
sudo dpkg-reconfigure tzdata

シェルウインドウを経由せずに、Windowsコマンドプロンプトから直接GUIプログラムを起動する

ショートカットファイルなどを作りスタートメニューに登録すれば、クリックするだけでLinuxのGUIプログラムを起動できる

Windowsコマンドプロンプト(Windows Power Shell)
C:\> wsl.exe [-d Ubuntu-20.04] bash -lc Linuxコマンド

日本語IMEのインストール

日本語化で fcitx はインストール済みのため、mozc のみをインストールすればよい

WSLのUbuntuシェル
$ sudo apt install fcitx-mozc

そして、Ubuntuシェル起動時にfcitxが自動的に起動するようにする

~/.profile
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
fi

xset -r は、キーのリピートを無効にするという意味合いで、全角・半角キーと重複するキーコード 49 『 ` 』が無駄にリピート入力されるバグを抑える働きをする。

日本語モードに切り替えるホットキーは、デフォルトで Ctrl + Space だが、これは fcitx-configtool でカスタマイズ可能。

Windows側にインストールされているVisual Studio CodeをLinux内から呼び出して使う

Microsoftの公式ドキュメント『 Linux 用 Windows サブシステムで Visual Studio Code の使用を開始する 』に書かれている手順を実施するだけ。

20220102-vscode-wsl.jpg
VS CodeにRemote Development 拡張機能パックをインストールする

この拡張機能パックには、Remote WSL, Remote Containers, Remote SSH の3つがパッケージされていて、一括でインストール可能になっている。