投稿日: 2026/5/7
vscodeからZedへの移行時に、DevContainerの設定にハマったので備忘録として残しておく
WSL2上にインストールしたZedのGUI(WSLg, wayland)環境変数を設定する
この解決策はChatGPT Plusに教えてもらった
私はwaylandやWSLgに明るくないため、不適切な記載があると思うし、そもそも適切な設定なのかもわからない
この設定による責任は追わないので、確実な方法を知りたい場合は他の方法を探していただきたい
修正・加筆依頼大歓迎
Windows側にZedをインストールし、リモート接続でWSL2上のプロジェクトを開くことはできるが、「+Connect DevContainer」が表示されない
※vscodeのRemote Containerと同じ感覚でやっていた

以下環境でのみ動作確認。異なる場合はわかりかねる。
Windows 11 home
WSL2
$ cat /etc/os-release PRETTY_NAME="Ubuntu 24.04.1 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.1 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=noble LOGO=ubuntu-logo
$ uname -a Linux SHUTX-1 5.15.167.4-microsoft-standard-WSL2 #1 SMP Tue Nov 5 00:21:55 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
$ echo $WAYLAND_DISPLAY wayland-0
$ echo $DISPLAY :0
$ ls /mnt/wslg PulseAudioRDPSink PulseServer doc run stderr.log weston.log PulseAudioRDPSource distro pulseaudio.log runtime-dir versions.txt wlog.log
curl -f https://zed.dev/install.sh | sh
zedコマンドを実行したところ、libasound.so.2ライブラリがないというエラーがでたので、インストール
$ zed --foreground /home/shutx/.local/zed.app/libexec/zed-editor: error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory
$ sudo apt-get install libasound2t64
これでライブラリ不足エラーはとりあえず解消(NoCompositorエラー発生)
$ zed . --foreground 2026-05-07T00:03:26+09:00 INFO [zed] ========== starting zed version 1.0.1+stable.260.ad3e097279b3a5c04b273a4f2f6c6ed1729ea0c8, sha ad3e097 ========== thread 'main' (141393) panicked at crates/gpui_linux/src/linux/wayland/client.rs:469:49: called `Result::unwrap()` on an `Err` value: NoCompositor note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
XDG_RUNTIME_DIRについて一応目は通した → XDG Base Directory Specification
wayland → Alpine Linuxのwiki
現在は以下のように設定されているが、WSL2上のGUIをWindowsで表示するには、WSLg用の設定に変更する必要があるらしい
※注意セクションにて記述したが、本来はXDG_RUNTIME_DIRはsystemd側で初期化・設定されるものであり、今回は単体LinuxではなくWSL2であるがための手動変更である点に注意(XDG_RUNTIME_DIRに設定されるディレクトリはいろいろ要件がある様子)
$ echo $XDG_RUNTIME_DIR /run/user/1000/
WSLgランタイムのディレクトリを設定
※永続化したい場合は、bashrc等へ
$ export XDG_RUNTIME_DIR=/mnt/wslg/runtime-dir
zedコマンド実行し、エラーが出ないことを確認
$ zed --foreground 2026-05-07T00:51:22+09:00 INFO [zed] ========== starting zed version 1.0.1+stable.260.ad3e097279b3a5c04b273a4f2f6c6ed1729ea0c8, sha ad3e097 ========== 2026-05-07T00:51:22+09:00 INFO [crashes] crash signal handlers installed zed is already running 2026-05-07T00:51:22+09:00 INFO [crashes] spawning crash handler process
「.devcontainer」, 「devcontainer.json」のあるディレクトリで「zed .」コマンドを実行したところ、無事DevContainerのポップアップが表示された

プロジェクト開くダイアログにも、DevContainerへの接続が表示された

zed GUI起動すると「/mnt/wslg/runtime-dir/wayland-0」に接続していることがわかる
$strace -f -e trace=connect,openat zed . --foreground 2>&1 | grep -E 'wayland|XDG|runtime|connect' [pid 155959] connect(4, {sa_family=AF_UNIX, sun_path="/mnt/wslg/runtime-dir/wayland-0"}, 34) = 0 ~以下省略~
こんな感じで変数として展開されているのだろうか...
$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY
まだコメントがありません