5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WSLgでLinuxGUIアプリを開こうとしても開けない場合の対処法

Last updated at Posted at 2021-11-11

概要

要するに、DISPLAY変数の設定に気を付けましょうというお話です。

$ echo ${DISPLAY}
:0

になっていればOKです。

以下Xserverの設定をwin10時代に頑張っていた人向け。そうでない人も是非。

Windows11でついに誰でもWSL2でGUIアプリを使えるようになりました

ここで告知があったように、WSLg(Windows Subsystem for Linux GUI)を導入した場合にはLinuxのGUIアプリが使えるようになりました。
Windows 10 バージョン22000.0以降(つまりWindows 11以降、Windows 10 バージョン21H1では利用不可)を導入している場合に利用可能です。Windows11を使わせようとしていますね。

ただし、最近使えるようになった wsl --installで入れるWSL2ではだめで Microsoft StoreからインストールしたWSLgでないと2021/11現在ではだめなようです。

これまで普通のUbuntuなら誰もが愛用しているであろうGeditですら簡単には動かなかったですが、(内蔵GPUでもいいのでGPUの設定を少しだけすると)sudo apt install gedit -yしただけでgedit ./hoge.txtが起動できるようになりました。

gedit.png

Windows10時代のGUIのためのWSL2の設定

私はこれまで、Windows10でWSL2を用いてGUIアプリケーションを動かすために、以下のフローを踏む必要がありました。

  • X Serverが必要なのでVcXsrvをWindows側にインストール
  • WSL2のファイアウォールの設定を緩くする
    • 「Windows Defender ファイアウォールのプロパティ->パブリック プロファイル->保護されているネットワーク接続: カスタマイズ」を外す
  • (bashrcなどを用いて)Linux側でDISPLAY変数の設定を毎回シェル上でする

最後の「(bashrcなどを用いて)Linux側でDISPLAY変数の設定を毎回シェル上でする」については、WSL2では毎回Linux側のホストIPが変わるために、以下の方法がwslのGitHubリポジトリで提案され、日本語記事でも広く取り上げられています。

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

出所: https://github.com/microsoft/WSL/issues/4106#issuecomment-501885675

Windows11+WSLgの時代にどうすべきか

このbashrcを流用したまま意気揚々と

sudo apt install gedit -y
gedit ~/.bashrc

をしたところ、うんともすんともいいませんでした。
ただ、同じことに苦しんでいる人がいて解決方法が提示されていました。

要するに、

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

これをしなければよかったのです。一件落着。

デフォルトで

$ echo ${DISPLAY}
:0

このようになるので、おそらくDISPLAYを書き換えてしまっていたのがよくなかったのでしょう。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?