Windows 10 で Linux GUI アプリをダブルクリックで起動できるようにする

WSL2 + X410で簡単にLinux GUIアプリを使えるように

少し前に、WSL2でLinuxのGUIアプリを利用できるようにするという記事を見ました。最近のMicrosoftの動きは柔軟というか開発者にやさしいというか、見ていてとても好ましい感じです。

WindowsでLinux GUIアプリを使う方法は以前からありました。WSLの登場以降は本当に簡単になり、私でもさらっと構築できました。

今後、WSL2で正式にGUIアプリをサポートするようになったときどのような形で実現するのかまだ詳しくはわかりませんが、今回はWSL2でGUIアプリを起動し、Windows上で稼働できるX410というX Serverを経由してデスクトップにレンダリングする。というやり方を試してみようと思います。

X410以外にもWindowsで稼働できるX Serverは他にもあります。WSL2とX410の連携は一般的なLAN環境を介して行うものなので他のX Serverでもほとんど同じやり方で構築できると思います。

WSL2とX410を連携させる方法はX410の公式クックブックで説明されています。

X410の設定

X410はサードパーティのXサーバアプリで、Microsoft Storeで購入できます。(たまに商店街にある店のようにずっと割引してます。私が買ったときは税込み580円でした。)

Microsoft Store X410販売画面のキャプチャ

インストールしたらX410を起動してください。起動できたらタスクバーのX410アイコンを右クリックしてAllow Public Accessを設定します。

あとは必要に応じてファイアウォールの開放を行ってください。ファイアウォールの設定は使っているソフトウェアによって変わるのでここでは説明しません。X410の公式クックブックにWindows Defender Firewallの設定方法が説明されているので参考になると思います。

Linuxディストリビューションの設定

Linuxディストリビューション(以降はdistro)は任意のもので構いませんが、WSL2としてインストールしてください。v1からv2への変換も簡単にできます。

インストールされているdistroのバージョンは wsl -l -v コマンドで確認できます。

wslコマンドでディストリビューションのWSLバージョンを表示

変換は --set-version オプションで行います。詳しくはヘルプを見てください。

今回は、Ubuntuを使います

まずは、distroに使いたいGUIアプリをインストールします。今回は nemo を使おうと思います。

sudo apt install -y nemo

次に、GUIアプリが利用するX Serverのディスプレイの設定を行います。

ここでいうディスプレイはWindows上で稼働するX410が作り出す仮想スクリーンのことですが、アクセスはネットワークを介して行います。設定は以下のコマンドで出来ます。

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0

DISPLAY という環境変数は<host>:<display>.<screen> という形式で指定します。 <host> はIPアドレスを指定するのですが、WSLの仮想ネットワークのIPアドレスは変わる可能性があるので、少し工夫が必要です。この辺りは公式クックブックで説明されています。

これで基本的な設定は完了です。

後は、コマンドラインでGUIアプリを実行すればデスクトップにレンダリングされるはずです。

ちょっと試したいとか、たまにしか使わないということなら毎回 export コマンドを実行すればよいのですが、よく使うということなら .bashrc.profile に追記してもいいと思います。

ダブルクリックで実行できるようにする

コマンドで毎回実行するのは面倒なので、ダブルクリックで実行できるようにします。

方法は2通りあります。batファイルを使う方法とショートカットを使う方法。どちらでも構いません。

batファイルを使う方法

batファイルを以下の内容で作成します。 distro には使うLinuxディストリビューション名を cmd にはGUIアプリを起動するコマンドを指定します。これでbatファイルをダブルクリックするだけで実行できます。

set distro=Ubuntu
set cmd=nemo
wsl -d %distro% -- export DISPLAY="$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0"; %cmd%

この方法の利点は、わかりやすさだと思います。複数行に分けたり適宜コメントを書いたりできるので後から見たときにも理解しやすいです。

ショートカットを使う方法

デスクトップ等で右クリックのメニューからショートカット作成ウィザードを呼び出します。

項目の場所を入力してください に以下のコマンドを入力します。

cmd /c wsl -d Ubuntu-18.04 -- export DISPLAY="$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0"; nemo

先頭のcmd /c がポイントです。それ以降はbatファイルを使う方法で説明したコマンドをワンライナーにしたものです。

後は任意の名前を付けて作成を完了します。これでショートカットをダブルクリックすれば実行できるはずです。

この方法の利点は、アイコンを変更できたり、スタートメニューに登録できることです。私はよく使うアプリはスタートメニューにピン止めしているのでこっちのほうが好みです。

batファイルのショートカットを作成することはできるので2つの方法を組み合わせることは可能です。個人的にファイルが増えるのは好みじゃないのでショートカットだけで使っています。

最後に

これでLinux GUIアプリが使いやすくなりました。

それほど使う機会はないかもしれませんが、Unix系でしか提供されていないクライアントアプリなどもたまにあるのでそういう時に試してみるといいかもしれません。

まあ、公式にLinux GUIがサポートされるようになったらもっと簡単にできるようになるとは思うので、ちょっとの間ですけどね。

--

--

No responses yet