日々のいろいろ

WSL2(Ubuntu 24.04)+ Zed + DevContainer 設定(非公式)

投稿日: 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

詳細

  1. WSL2上にZedをインストール
curl -f https://zed.dev/install.sh | sh
  1. libasound2t64をインストール

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
  1. XDG_RUNTIME_DIR変数を設定

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
  1. GUI実行

「.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

コメント

0

まだコメントがありません

コメントするMarkdown不要
0 / 1500 文字