Windows11 の WSL2 + WSLg で GUI アプリ実行時に発生するエラー「Error: Can’t open display: 0」の対処方法
2021 年 7 月 29 日に Windows11 が「Windows Insider Program」の Beta チャネルでリリースされたので、メイン PC を Windows11 に Upgrade しました。
リリース情報のネタ元はココです。
Windows11 では WSL を「wsl –install」とするだけで、従来の CUI ベースの WSL2 に加えて GUI アプリを動作させることができる WSLg も同時にインストールされます。
前々から興味があったので、早速 Linux の GUI アプリを動作させてみたのですが、最初数日は機嫌よく動作していたのですがある日突然、以下のエラーが発生するようになりました。
色々と試していたのですが、最終的に修復できた方法をご紹介します。
同じ現象で悩まれている方の一助となれば幸いです。
エラー内容
WSL2 のターミナルで「xeyes」や「gedit」などの Linux の GUI アプリを起動させると以下のエラーが発生しました。
$ xeyes
Error: Can't open display: 0
やってみたけど効果がなかった方法
Windows11 以前から WSLg については先行して導入し試されている方がおられるので、同様のエラーとなっている場合の対象方法について調べてみました。
大半の対策が、「.profile」などに以下の設定を行うものでしたが、残念ながら私の環境では効果がありませんでした。
export DISPLAY=:0.0
最終的の効果のあった方法
GitHub の WSL 関連のissuesにヒントが有りました。
結論としては WSL の Update で復旧しましたので、具体的な手順について説明します。
PowerShell を管理者モードで起動
WSL のアップデートは管理者モードで実行した PowerShell で実行する必要があります。
PowerShell の管理者モードの実行方法はどの方法でも構いませんが、以下の方法がわかりやすいです。
- スタートメニューを開く(Windows キーを押す)
- 「Powershell」と入力する
- PowerShell のアプリが選択できるようになるので、「管理者として実行する」をクリック
これで、管理者モードで PowerShell が起動します。
WSL をアップデート
管理者モードの PowerShell で以下のコマンドを実行すると WSL が最新の状態に更新されます。
wsl --update
WSL を再起動
WSL のアップデートが完了したら、WSL を再起動して完了です。
wsl --shutdown
動作確認
Linux GUI アプリが動作するか確認してみる。
xeyes
gedit
無事動作するようになりました。
もともと動作していたけど、色々更新しているうちに動作しないようになった場合は試してみてください。