「WSLg」を使ってWindows上でLinuxのGUIアプリを動かしてみよう
はじめに
第3回と第4回では、WSLのUbuntuへのパッケージのインストール方法を紹介しました。APT/snapを使って、Ubuntu向けに用意された膨大なパッケージの中から、好きなアプリをインストールできるようになったのではないでしょうか。
ここまで紹介してきたように、WSLは基本的にWindows Terminal(や、その他のターミナルエミュレーター)を経由したコマンドラインインターフェイス(CLI)で操作しますが、Ubuntuにもグラフィカルなデスクトップ環境や、その上で動作するGUIアプリが数多く存在します。そうしたアプリはCLIしか持たないWSL上では利用できないのでしょうか。
いいえ、実は動かせるのです。現在のWSLには「Windows Subsystem for Linux GUI(WSLg)」と呼ばれる機能が実装されています。これはLinuxのGUIアプリをWindows上でシームレスに動かす機能です。今回はWSLgを使って、Windowsのデスクトップ上でWSL上のGUIアプリを動かしてみましょう。
GUIアプリのインストールと起動
2024年12月現在、Windows 11上にインストールしたWSL2環境であれば、特に設定などは必要ありません。GUIアプリのパッケージをインストールし、ターミナルから実行するだけで動かすことができます。試してみましょう。以下のコマンドを実行してください。Ubuntuの標準ファイルマネージャーである「ファイル(旧名Nautilus)」をインストールします*1。
*1: Ubuntuの標準デスクトップ環境でもあるGNOMEでは、アプリケーション名に「ファイル」や「ビデオ」といった、シンプルすぎて逆にまぎらわしい名称が採用されています。データとしてのファイルとアプリ名の「ファイル」の区別がつきにくいため、本記事では旧名である「Nautilus」と表記します。$ sudo apt install -U -y nautilus
依存関係により、かなり大量のパッケージがインストールされます。インストール完了までしばらく待ちましょう。インストールが完了してプロンプトに復帰したら「nautilus」コマンドを実行してください。
$ nautilus
Windowsのデスクトップ上にNautilusのウィンドウが表示されます。WSL内で起動しているアプリケーションですが、Windowsのデスクトップとシームレスに統合されているため、Windowsのネイティブアプリと区別ができないほどです。
WSL内でのファイル操作は、基本的にcpやmvといったLinuxコマンドを用いて行いますが、複数のファイルをコピーしたり、移動したりする場合は複数のウィンドウを開いてドラッグ&ドロップした方が直感的に操作できるでしょう。特にLinuxのコマンドラインに慣れていない初心者であれば、なおさらです。そういう場合は、GUIのファイルマネージャーをWSL内で動かすのもお勧めです*2。
*2: ちなみに、Windowsのエクスプローラーを使ってもWSL内のファイルを操作できます。Windows上のファイルをWSL内へ持ち込みたい場合に便利です。実際に起動してみると分かりますが、WSL内のNautilusは環境に起因する問題によって起動に時間がかかります。そのため、もっと高速に動作する別のファイルマネージャーを使うのもよい考えです。Ubuntuには様々なファイルマネージャーのパッケージが用意されているので、色々試して好みのアプリケーションを見つけてみてください。軽量なLinux用ファイルマネージャーとしては「PCManFM」などが有名です。PCManFMは、以下のコマンドでインストールと起動ができます。
$ sudo apt install -U -y pcmanfm $ pcmanfm
CLIでコマンドを実行すると、そのコマンドが終了してプロンプトに復帰するまで、次のコマンドを入力することはできません。これはGUIのアプリを起動した場合も同様です。Nautilusのウィンドウを閉じるまで次のプロンプトは表示されず、そのターミナル上では別のコマンドを実行できなくなってしまいます。GUIアプリはCLIとは独立して動作するので、アプリを起動しただけでCLIがブロックされてしまうのは少々不便です。
そこで、以下のようにコマンドを実行してみてください。詳しいコマンドの解説は省略しますが、「nohup」はハングアップシグナルを無視する、「>/dev/null 2>&1」はターミナルに出力を行わない、最後の「&」はバックグラウンドでアプリを起動することを意味しています。
これで実行したGUIアプリ(ここではnautilus)を起動したターミナルから切り離せます。コマンドを実行したターミナルはすぐにプロンプトに復帰し、起動したGUIアプリは独立して動作するようになります。
$ nohup nautilus > /dev/null 2>&1 &
また、インストールしたGUIアプリはWindowsのスタートメニューから直接起動もできます。いちいち複雑なコマンドを入力することなくWindowsアプリと同様に使えるため、こちらの方が便利かもしれません。
日本語フォントのインストール
先ほどの画面を見て、フォルダ名が文字化けし、いわゆる「豆腐」になっていたことに気づいたでしょう。これはWSL版のUbuntuではデフォルトで日本語フォントが使われていないためです。というわけで、日本語フォントを追加しましょう。当然ですが、フォントもAPTで簡単にインストールできます。フォントは好みのものを使用して構いませんが、ここでは「Notoフォント」をインストールします。以下のコマンドを実行してください。
$ sudo apt install -U -y fonts-noto-cjk
フォントをインストールするだけで、日本語ファイル名が正しく表示されるようになります。
アプリケーションの日本語化
これで日本語は表示されるようになりましたが、アプリケーションそのものが英語のままでは、少し使いづらいでしょう。特に使い慣れていないアプリであれば、メニューなどは日本語化されているのが望ましいです。そこで、以下のコマンドを実行して、翻訳データが含まれている日本語の言語パックをインストールします。
$ sudo apt install -U -y language-pack-ja language-pack-gnome-ja
インストールが完了したら、以下のコマンドで「ロケール」を日本語に切り替えます。
$ sudo update-locale LANG=ja_JP.UTF-8
ここまでできたら、一度Windows Terminalのタブを閉じて新しくシェルを起動し直し、新しいシェル上で「locale」コマンドを実行してみましょう。各種変数が「ja_JP.UTF-8」になっていることを確認してください。
$ locale
この状態で、再度ファイルマネージャーを起動してみましょう。メニューや各種メッセージが日本語に翻訳されているはずです。
WSLで日本語を入力するには
ここまでの作業で日本語を表示できるようにはなりましたが、まだ日本語の入力ができません。「WSLgのアプリはWindowsのデスクトップ上でシームレスに動作する」と述べましたが、実は現時点でWindowsのIMEではWSLgのアプリに直接日本語を入力できないのです。WSLgのアプリに日本語を入力するには、WSLの中でLinux向けの日本語入力システムを動かす必要があります。
まず、以下のコマンドを実行して、インプットメソッドの「Fcitx5」と変換エンジンの「Mozc」をインストールします。
$ sudo apt install -U -y fcitx5-mozc
続いて、環境変数とインプットメソッドの自動起動を設定します。以下のコマンドを実行して「/etc/profile.d/99-local.sh」というファイルを作成してください。
$ cat <<EOF | sudo tee /etc/profile.d/99-local.sh export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx export DefaultIMModule=fcitx fcitx5 >/dev/null 2>&1 & EOF
設定ファイルが作成できたら、続いて以下のコマンドを実行してファイルの内容を読み込みます。あるいはWindows Terminalを一度終了して、再起動しても構いません。
$ source /etc/profile.d/99-local.sh
日本語配列のキーボードを使っている場合は、以下のようにfcitx5-configtoolコマンドを実行してキーボードの設定を変更してください。なお、英語配列のキーボードを使っている場合には、この手順を省略できます。
$ fcitx5-configtool
すると、インプットメソッドの設定ウィンドウが開きます。
左側の「現在の入力メソッド」にある「キーボード - 英語(US)」をダブルクリックして削除します。そして右側の「有効な入力メソッド」にある「キーボード - 日本語」をダブルクリックし、入力メソッドとして追加してください。最後に「OK」をクリックしてウィンドウを閉じます。
以後、WSLgのGUIアプリ上で[Ctrl]+[Space]キーか、[半角/全角]キーを押すと日本語入力がONになります。
おわりに
実際のところ「WSLでLinux用のGUIアプリを動かしたい」というシーンはそれほど多くはありません。というのも、FirefoxやLibreOfficeに代表されるようなLinux向けのGUIアプリのほとんどはマルチプラットフォームに対応しており、Windows向けのビルドが存在するからです。そのため「Linuxにしか存在しないアプリを、WSLを使ってWindows上で動かす」というシチュエーションそのものが、ほぼないのです。しかし、今回紹介したファイルマネージャーのように「WSLの管理運用そのものをGUIを使って行いたい」という需要は、それなりにあるのではないでしょうか。
WSLだけでなく、開発作業にLinuxを使うのであればCLIの習熟は必須と言えますが、初心者のうちはすべての作業をCLIで行うのも難しいでしょう。そこでWSLgを使ってGUIと併用してみるのもお勧めです。
次回は、Linux環境に標準的にインストールされている基本コマンド群である「Coreutils」の使いこなしについて解説します。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Windows Subsystem for Linux 2 でDocker を使用する(その2)
- 「Ubuntu」のパッケージ管理を学ぼう
- 「Windows Terminal」を使いこなす
- 「WSL2」をインストールしよう
- Windows 11でLinuxを使う:Windows Subsystem for Linux 2の設定
- WSLでUbuntuのユニバーサルパッケージシステム「snap」を使う
- Ubuntuを使ったWebサーバ構築
- 「Windows 10」プレビュー版(Build 21364)の「WSL2」がLinuxのGUIアプリケーション実行に対応
- Ubuntuサーバの管理
- Windows Subsystem for Linux 2 でDocker を使用する(その1)