Windows Subsystem for Linux GUI 利用ノート¶
WSLg に関する利用ノートをつづる。次の課題を解決したい:
インストールおよびアップグレードの方法を会得する。
WSLg を管理する方法を会得する。
Linux GUI アプリケーションを起動する方法を会得する。
起動不能問題を解決する方法を知る。
Note
本稿でも引き続き WSL と単に言う場合でも WSL 2 を指す。ただし、インストールは現在完了していて正常に稼働しているとする。
WSL の distribution は Ubuntu しかインストールしていないので、以下の記述で Ubuntu とある部分すべてを他の distribution に置換して読んでも、機能として成立するはずだ。
WSLg に関する作業に限った話ではないが、Ubuntu パッケージを新しくインストールする前には必ず apt update
を実行しておくものとする。
本稿執筆時の環境情報は次のとおり:
- Windows:
Home version 22H2 Build 19045.2908
- GPU:
Intel HD Graphics 4600
- WSL 2:
5.15.90.1
- WSLg:
1.0.50
- Ubuntu:
22.04.2 LTS
目的¶
画像を表示したり、音声を再生したりする Linux プログラムを正常に実行したい。ここでいう Linux プログラムは、結果としてそうなるものも含む。例えば、Matplotlib プロットを出力する Python スクリプトなども含まれる。
メディアファイルの内容を確認するだけならば Windows 側のアプリケーションを呼び出せば十分だが、どうしても WSL 側でウィンドウを生成したい場合がある:
Pillow の
show
またはそれを間接的に利用するアプリケーションFFmpeg の
ffplay
幸い、最近になって WSLg というものが Windows 10 の WSL でも動作するようになってくれた。WSLg とは何か、開発陣の言葉から引用するとこうだ:
WSLg is short for Windows Subsystem for Linux GUI and the purpose of the project is to enable support for running Linux GUI applications (X11 and Wayland) on Windows in a fully integrated desktop experience.
コマンドラインから GUI を起動できるのはひじょうに便利なので、環境構築を確実にしたい。
See also
WSLg をインストール・更新する¶
私の環境は前述のとおり WSL が稼働している。ここでは WSL のインストールについては述べず、WSLg のインストール、更新、状態確認に集中して記述する。
WSL のインストールがされていない場合¶
From a command prompt with administrator privileges, run the command
wsl --install -d Ubuntu
, then reboot if prompted. (中略) Voilà! WSL and WSLg are installed and ready to be used!
WSL すらインストールされていない場合、それをインストールすれば WSLg も同時にインストールされると開発陣の文書に述べられている。そちらのほうが話が早いので、このノートは不要かもしれない。
したがって、Windows PC を新調する場合には、難しいことを気にせずに済みそうだ。
WSLg 稼働実績がない場合¶
WSLg を一度も動作したことがない場合には Windows 側のコンソールで次のコマンドを実行しておく必要があるはずだ:
> wsl --update
> wsl --shutdown
コツをまとめる:
すべての wsl コマンドは管理者として実行する。
コマンド wsl --update は WSL と WSLg の両方を最新に更新すると覚えておいて間違いない。
変更を有効にするには WSL の再起動が要る。そのための wsl --shutdown だ。このコマンドはいつもならメモリー確保目的で実行しているものだ。
あとは GUI パッケージを Ubuntu 端末から apt を実行することで得る。これで WSLg が有効になっていて欲しい。
WSLg を更新する¶
To update to the latest version of WSL and WSLg released for preview, simply run
wsl --update
from an elevated command prompt or powershell.
WSLg 稼働実績がない場合の手順と実質的に同じということになる。WSL を再起動することを忘れてはいけない。
WSLg をアンインストールする¶
WSLg をアンインストールする方法はない。WSL をインストールすると WSLg も一緒に付いてくるのだから。ただし、無効にする方法はある:
Users wanting to use different servers than the one provided by WSLg can change these environment variables. User can also choose to turn off the system distro entirely by adding the following entry in their .wslconfig file (located at
c:\users\MyUser\.wslconfig
). This will turn off support for GUI applications in WSL.[wsl2] guiApplications=false
動作確認¶
WSLg のおかげで動作するアプリケーションは、Windows からでも Ubuntu からでも起動可能だ。
WSLg インストール初期状態では、おそらく Linux GUI アプリケーションもいくつかインストールされている。まずはそれが正しく起動することを確認する。Windows にわざわざ入れていないもの、例えば ImageMagick 辺りが良い。
Windows から¶
Windows メニューの Ubuntu フォルダー以下にある項目を何か選択すると、そのウィンドウが起動する。本稿執筆時点での私の Windows スタートメニューのショートカットの宛先をチェックするとこうだ:
Application |
Command |
---|---|
Caffeine (Ubuntu) |
|
ImageMagick (color depth=q16) (Ubuntu) |
|
Tilix (Ubuntu) |
|
WSLView (Ubuntu) |
|
このことから、他の Ubuntu GUI アプリケーションも同じ要領で Windows 側から実行可能だと思われる。
Ubuntu から¶
まず、上記のアプリケーションをコマンドラインから直接実行して、ウィンドウが正常に出現することを確認したい。万が一 GUI アプリケーションが何もインストールされていない場合には、Ubuntu 端末からパッケージマネージャーで適当なものをまずインストールする。
If you want to get started with some GUI apps, you can run the following commands from your Linux terminal to download and install some popular applications. If you are using a different distribution than Ubuntu, it may be using a different package manager.
ImageMagick ならばこう:
bash$ sudo apt update
bash$ sudo apt install imagemagick
インストールが完了すると、Ubuntu からコマンドライン実行でアプリケーションが起動する。起動を確認したらいったん終了し、今度は Windows スタートメニューの Ubuntu フォルダーを確認する。当該アプリケーションの起動ショートカットが新しく現れているはずだ。このリンク追加処理は WSLg が行うものだ。
実践例¶
画像ファイル、音声ファイル、映像ファイルを好きなプログラムで表示、視聴したい。 FFmpeg をインストールすれば ffplay でそれらすべてを再生できる:
bash$ ffplay speaking-cat.mp4
ImageMagick をインストールすれば、コマンド display で画像を専用ウィンドウに出力できる:
bash$ display funny-cat.jpg
また、Pillow, PyQt など、ウィンドウを開く Python スクリプトも使い物になる。
See also
文献¶
- Enabling the Windows Subsystem for Linux to include support for Wayland and X server related scenarios
GitHub にある当開発サイトの README に目を通しておけば、少なくとも正常動作時に欲しい情報は十分得られる。異常時には Wiki の関連項目を当たること。