Ich bin mit WSL2 unter Windows 10 sehr zufrieden, nachdem ich gerade von Mac umgestiegen bin. Ich verwendeX410auf dem Windows-Host und starten Sie X11-Apps innerhalb von WSL, indem Sie
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'):0.0
bevor ich mein Programm starte.
Eine Zeit lang funktioniert es einwandfrei, aber wenn mein Computer aus dem Ruhezustand erwacht, ist das X-Fenster verschwunden. Die Anwendung wird immer noch als ausgeführt angezeigt ps
.
Ich habe das Gefühl, dass es mit dem Verlust der Netzwerkverbindung zwischen der X11-App und dem X410-Server zu tun hat, aber ich bin mir nicht sicher. Hat jemand dies schon erlebt und eine Problemumgehung gefunden?
Ich verwende Windows 10 Insider Preview Build 18945.
Antwort1
Sie haben Recht, es ist ein Problem mit dem Netzwerk. Es betrifft offenbar alle X11-Verbindungen zu Hyper-V. Eine Lösung besteht darin, für die X11-Verbindung etwas anderes als TCP/IP zu verwenden.
Der Entwickler des Windows X11-Servers x410 erklärte, wie man das Problem für Hyper-V-VMs mithilfe von virtuellen Sockets beheben kannHier.
Leider erklärt er am Ende auchdieser ausführlichere Artikeler konnte dies unter WSL2 nicht zum Laufen bringen. Er wird warten, bis WSL2 ausgereift ist, bis es eine bessere Kommunikation zwischen Betriebssystemen über Unix-Domain-Sockets bietet.
Antwort2
Sie könnenXpraoderX2Goals Workaround (für mich funktioniert X2Go besser).
Xpra
- Installieren Sie Xpra auf Ihrer Linux-Distribution (
apt install xpra
unter Ubuntu). - Installieren Sie Xpra unter Windows (das Installationsprogramm befindet sich unterXpra-Client herunterladen)
- Starten Sie xpra unter Linux mit
xpra start --bind-tcp=0.0.0.0:10000 :10000
- Starten Sie es
Xpra.exe
in Windows und stellen Sie eine Verbindung zum Port her10000
.
Der Client stellt nach einem Ruhezustand/Standby automatisch die Verbindung wieder her. Selbst wenn Sie die Verbindung verlieren (beispielsweise beim Anmelden bei einem VPN), können Sie die Verbindung jederzeit manuell wiederherstellen.
X2Go
- Installieren Sie X2Go auf Ihrer Linux-Distribution (
apt install x2goserver
unter Ubuntu). - Installieren Sie den X2Go-Client unter Windows (das Installationsprogramm befindet sich unterX2Go-Client herunterladen)
- SSHD unter Linux reparieren und starten:
Sie müssen sshd außerdem bei jedem WSL-Neustart mit startensudo apt-get remove --purge openssh-server sudo apt-get install openssh-server sudo service ssh --full-restart
sudo service ssh start
. - Starten Sie den Client unter Windows und stellen Sie die Verbindung mit „Sitzungstyp: Veröffentlichte Anwendungen“ her.
PS: Ich schreibe gerade einen kleinen Blogbeitrag:Entwicklungsumgebung in WSL2
Antwort3
Dafür gibt es eine ganz gute Lösung:https://github.com/nbdd0121/wsld.
WSL Daemon – Stabile X11-Verbindung und Zeitsynchronisation für WSL2
Es macht genau das, was eine der anderen Lösungen andeutet: Es verwendet Unix-Domain-Sockets. Ich verwende es seit vielen Monaten ohne Probleme.