TL; DR:
Добавьте к своему ~/.bashrc
следующее:
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
export LIBGL_ALWAYS_INDIRECT=1
Включите Publi c Доступ на вашем сервере X11 для Windows. *
И запускайте Set-NetFirewallProfile -DisabledInterfaceAliases 'vEthernet (WSL)'
из повышенного Powershell на каждом запуске системы.
Как указано WSL_subreddit_mod для reddit и, как вы можете прочитать в Документация Microsoft по WSL2 , архитектура WSL2 использует виртуализированные сетевые компоненты. Это означает, что WSL2 имеет другой IP-адрес, чем хост-машина. Это объясняет, почему настройки пересылки X11 WSL1 нельзя просто перенести в WSL2.
На странице Wiki Ubuntu о WSL вы уже можете найти конфигурацию, адаптированную для WSL2, в разделе Запуск графических приложений . Аналогичная конфигурация также предлагается вышеупомянутым пользователем Reddit, который также вносит свой вклад в другую часть решения: Включить доступ Publi c на сервере X11 в Windows.
Это означает, что добавьте следующее к вашему ~/.bashrc
:
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
export LIBGL_ALWAYS_INDIRECT=1
И Включить Publi c Доступ на вашем сервере X11 для Windows. *
Самая важная часть для включения пересылки X11 для WSL2 на Windows 10 по-прежнему отсутствует: брандмауэр Windows блокирует соединения через сетевой интерфейс, настроенный по умолчанию для WSL.
Отдельное правило входящих для TCP-порт 6000 требуется, чтобы разрешить доступ WSL к X-серверу. После того, как правило было создано, как описано wsl- windows -toolbar-launcher people, диапазон IP-адресов может быть ограничен WSL su bnet в настройках вновь созданного правила под Scope : 172.16.0.0 / 12 .
*: если вы используете VcXSrv , вы можете включить доступ publi c для вашего X-сервер, отключив Контроль доступа в дополнительных настройках:
Или позвонив по номеру vcxsrv.exe
напрямую с флагом ac
: vcxsrv.exe -ac
, как указано ameeno о выпуске github.