LoginSignup
4
2

More than 3 years have passed since last update.

WSL2でRstudioを使うときのX11 Forwarding設定

Last updated at Posted at 2020-08-20

WSLのバージョン

もともと旧WSLを使用していたのだが、同じ端末でWSL2に更新した。
WSLにおいて下記コマンドを入力。

コマンド
lsb_release -a

出力でバージョンが20.XXとなっていることからWSL2への更新がなんとかできたことを確認。

出力
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:        20.04
Codename:       focal

WSL2でのX11 Forwarding設定

実用面でWSL (18.XX)とWSL2 (20.XX)の使い勝手の差はほとんどなく(何かしらのツールがバージョンしているしていないの違いはある)、パフォーマンスなどへの改善が多いのかと思う。

大きく違う点として、X11 Forward設定のアドレスがlocalhostでなくなったということがある。

この設定は、ホームの.bashrcなどで次の一行を追加することで行われる。

(WSL)
export DISPLAY=localhost:0.0

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

WSL2では、端末を起動するたびにアドレスが変わるため、/etc/resolv.confからnameserverを読み取ることによって設定している。

確認
> $DISPLAY
172.20.XXX.X:0: command not found

x11-appsなどをインストールしたうえで、コマンドxeyesを実行し、その設定が完了していることを確認する。

image.png

RStudio-serverでX11の機能を確認

RStudio-serverのインストールについては、公式でどんどん更新があるほか、いくつか記事はあるため、作業に時間を要するにせよ、あまりつまることなく作業を進められるかと思う。

image.png

写真にあるように、次のコマンドを実施してみる。

capabilities()

すると、X11でFALSEと付記されていることがわかる。
例えば、3次元プロット用パッケージ rgl とかだと、新たにウィンドウを開いて描画結果を出力するのであるが、この状態だとそれができない。

rgl読み込み時のWarning
> library(rgl)
Warning messages:
1: In rgl.init(initValue, onlyNULL) : RGL: unable to open X11 display
2: 'rgl.init' failed, running with 'rgl.useNULL = TRUE'. 
> open3d()
null 
   1 

読込時に上記Warningが現れ、open3d()にてウィンドウを開こうとしても開けない。
ちなみに、WSL2のコマンドライン上でRを起動すると、このようなエラーはでず、正常に機能する。

解決策:再起動とDISPLAYの修正

原因は、環境変数DISPLAYがRStudioだと異なってしまっているため。

> Sys.getenv("DISPLAY")
[1] ":0"

これは、X11 Forwardingにlocalhostを用いていたWSLでは正常に動く状態だが、WSL2からは書き換える必要がある。

一度、Rをrestartする。

WSL2のコマンドライン上で$DISPLAYを確認したうえで、RStudioの設定を変更する。

> Sys.setenv("DISPLAY" = "172.20.XXX.X:0")

image.png

capabilities()のX11欄がTRUEとなり、これでrglが使える。

image.png

4
2
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
4
2