Программы WSL2 X11 «исчезают»

Программы WSL2 X11 «исчезают»

Я в основном очень доволен WSL2 на Windows 10, только что перешел с Mac. Я запускаюX410на хосте Windows и запустите приложения X11 внутри WSL, установив

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

перед началом моей программы.

Некоторое время все работает нормально, но после того, как мой компьютер выходит из спящего режима, окно X исчезает. Приложение по-прежнему отображается как запущенное в ps.

У меня такое чувство, что это связано с потерей сетевого соединения между приложением X11 и сервером X410, но я не уверен. Кто-нибудь сталкивался с этим и придумал обходной путь?

У меня установлена ​​Windows 10 Insider Preview, сборка 18945.

решение1

Вы правы, это проблема с сетью. По всей видимости, она влияет на все соединения X11 с Hyper-V. Решение — использовать что-то другое, нежели TCP/IP, для соединения X11.

Разработчик сервера Windows X11 x410 объяснил, как исправить это для виртуальных машин Hyper-V с помощью виртуальных сокетовздесь.

К сожалению, он также объясняет в концеэта более обширная статьяон не смог заставить это работать на WSL2. Он собирается подождать, пока WSL2 не станет более зрелым, пока не будет улучшена межоперационная связь через сокеты домена Unix.

решение2

Вы можете использоватьXpraилиX2Goкак обходной путь (для меня X2Go работает лучше).

Xpra

  1. Установите Xpra на свой дистрибутив Linux ( apt install xpraна Ubuntu).
  2. Установите Xpra на Windows (установщик находится в разделеXpra клиент Скачать)
  3. Запустите xpra в Linux с помощьюxpra start --bind-tcp=0.0.0.0:10000 :10000
  4. Запустите Xpra.exeв Windows и подключитесь к порту 10000.

Клиент автоматически переподключится после сна/ожидания. Даже если вы потеряете соединение (возможно, при входе в VPN), вы всегда можете переподключиться вручную.

X2Go

  1. Установите X2Go на свой дистрибутив Linux ( apt install x2goserverна Ubuntu).
  2. Установите клиент X2Go на Windows (установщик находится в разделеX2Go клиент Скачать)
  3. Исправьте и запустите sshd в Linux:
    sudo apt-get remove --purge openssh-server
    sudo apt-get install openssh-server
    sudo service ssh --full-restart
    
    Вам также придется запускать sshd при каждом перезапуске WSL с помощью sudo service ssh start.
  4. Запустите клиент на Windows, подключитесь, используя «Тип сеанса: Опубликованные приложения»

PS: Сейчас я пишу небольшую запись в блоге:Среда разработки в WSL2

решение3

Для этой проблемы есть вполне хорошее решение:https://github.com/nbdd0121/wsld.

WSL Daemon — стабильное соединение X11 и синхронизация времени для WSL2

Он делает именно то, чего не делают другие решения: использует сокеты домена Unix. Я использую его уже много месяцев без проблем.

Связанный контент