LoginSignup
17
6

More than 1 year has passed since last update.

【WSL2 Ubuntu22.04】 Elixir DesktopをWSLgで動かしてみる(完成版)

Last updated at Posted at 2022-10-30

課題

WSLgが有効になっていれば、Ubuntuの場合と同様の方法でElixir Desktop動作するのではないか?

Elixir Desktopのサンプルを実行してみました。

ウインドウは表示されて、動きそうなんですが、ウインドウ内にTodoアプリが表示されません。真っ白な表示でした。

解決策

次の環境変数を設定することで、動くようになります。
$ export GDK_BACKEND=x11

image.png

Vega-LiteもWSLgで表示できるようになりました。

回避策発見の経緯

WSLgでは、Vega-liteの表示も画面が真っ白で表示されませんでした。
もしかして、Elixir desktopの問題ではなく、wxWebViewの動作がおかしいのでは?
Ubuntuの場合とwx関係のインストールされれているパッケージに違いはない。
wxWebView表示する.cppプログラムを作って動かしてみる

masa@wsl-elixir:~/wx$ ./hello
WaylandCompositor requires eglBindWaylandDisplayWL, eglUnbindWaylandDisplayWL and eglQueryWaylandBuffer.
Nested Wayland compositor could not initialize EGL

このようなエラーが発生し、表示されない。やはり、wxWebViewの問題。
エラーメッセージを検索した結果、issueに回避策を発見

dbusに関するエラーの対応

この対応は実施しなくても動作します。エラー表示をでなくした場合、systemdを有効することで、でなくできます。
WSL2のubuntuのデフォルトでは動作していないです。

バージョンが古いと対応していない。以下のバージョンはOKでした。

> wsl --version
WSL バージョン: 0.70.4.0
カーネル バージョン: 5.15.68.1
WSLg バージョン: 1.0.45
MSRDC バージョン: 1.2.3575
Direct3D バージョン: 1.606.4
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windowsバージョン: 10.0.22621.675

wsl.confを修正し、wslをshutdownする。

/etc/wsl.conf
[boot]
systemd=true

参考

https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/
https://x410.dev/cookbook/wsl/sharing-dbus-among-wsl2-consoles/
https://github.com/microsoft/wslg/issues/595

17
6
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
17
6