So erstellen Sie eine Verknüpfung in Windows 10 zum Starten einer WSL2-GUI-App in VcXsrv

So erstellen Sie eine Verknüpfung in Windows 10 zum Starten einer WSL2-GUI-App in VcXsrv

Ich versuche, eine Verknüpfung für Firefox von WSL2 zu Windows 10 Home zu erstellen, aber das ist mir nicht gelungen. Ich verwende VcXsrv, das ich so eingestellt habe, dass es automatisch startet. Ich kann WSLg nicht verwenden, da ich nicht Windows 11 verwende.

Können Sie Apps wie Firefox in einer Windows-Verknüpfung verwenden, ohne sie DISPLAYmanuell exportieren zu müssen?

Antwort1

Es klingt nach Ihnen:

  • Ihre DISPLAYVariable ist bereits richtig eingerichtet und Sie können Firefox über die Befehlszeile in VcXsrv ausführen. Das ist ein guter Anfang.

  • NichtHabe die DISPLAYVariable noch nicht exportiert ~/.bashrc, da Sie erwähnen, dass sie manuell exportiert werden muss.

Wenn das der Fall ist, müssen Sie zuerst die Variable in Ihrer Startkonfiguration exportieren. Wenn Sie diesen Teil bereits erledigt haben, fahren Sie mit dem nächsten Schritt fort."Verknüpfung zur Befehlszeile"Abschnitt weiter unten.

DISPLAY im Start exportieren

Fügen Sie Folgendes zu Ihrem hinzu ~/.bashrc:

export DISPLAY="$(hostname).local:0"

Das verwendet mDNS, um die richtige IP-Adresse basierend auf meinemAntwort hier zum ThemaWenn Sie eine andere Einstellung haben DISPLAY, die für Sie funktioniert, können Sie diese stattdessen verwenden, aber ich finde den hostnamebasierenden Ansatz in den meisten Fällen am einfachsten.

Dann:

source ~/.bashrc

um die Konfiguration erneut zu lesen. Sie können die Shell zur Sicherheit auch neu starten. Stellen Sie dann sicher, dass Firefox ausgeführt wird.

Tastenkombination für die Befehlszeile

Das oben genannte funktioniert, wenn Sie sich in eineminteraktivShell, da die rc-Datei für interaktive Shells verwendet wird. Wenn Sie Firefox jedoch über eine Verknüpfung starten, müssen Sie den wsl.exeBefehl verwenden, und standardmäßigist nichteine interaktive (oder Login-)Shell.

Versuchen Sie aus dem Gedächtnis, Ihre Windows-Verknüpfung folgendermaßen einzurichten:

wsl -e bash -lic "firefox"

Dadurch wird Bash ausgeführt:

  • Als Login-Shell ( -l), die Ihre~/.bash_profile
  • Als interaktive Shell ( -i), die Ihre~/.bashrc
  • Und führen Sie den Befehl ( -c) Firefox aus

Antwort2

Ich empfehle die Verwendung der folgenden Syntax:

wsl -e bash -lic "nohup firefox &"

"&" bedeutet in Linux "im Hintergrund starten". Ohne "&" haben wir ein aktives Fenster mit dem übergeordneten Prozess (Bash), mit "&", aber ohne "nohup", wird unser Prozess zusammen mit dem übergeordneten Prozess beendet (Bash-Fenster).

Mit „nohup“ und „&“ sieht alles hübsch aus – nur Firefox-Prozess.

Antwort3

Weiter:

Windows-Verknüpfung (Zielbefehl)

Dies funktioniert für mich unter meinen speziellen Umständen, d. h. Windows 10 mit WSL2 Debian, am besten und zuverlässigsten.

C:\Windows\System32\wsl.exe -d Debian -- bash -lic "nohup firefox &"

Hinweis (bei Migration von GWSL)

Wenn Sie vor dem Upgrade auf WSL2 GWSL zum Starten von GUI-Apps verwendet haben, überprüfen Sie Ihre ~/.bashrc& ~/.profile- (oder ~/.bash_profile)-Dateien noch einmal, um alle von GWSL dort platzierten Konfigurationen zu entfernen, die die DISPLAYUmgebungsvariable versehentlich durch eine ungültige Variable überschreiben könnten, die Ihre Nameserver-IP-Adresse (von /etc/resolve.conf) enthält.

In meinem Fall waren die alten GWSL-Konfigurationen DISPLAYauf 1.1.1.1:0.0anstelle von eingestellt :0, was zu Problemen führte.

Antwort4

Beim Versuch, eine Xilinx IDE mit der erforderlichen Umgebung und meinem Arbeitsverzeichnis in WSL zum Laufen zu bringen, landete ich bei Folgendem:

wsl.exe -e bash -lic ". /opt/Xilinx/14.7/ISE_DS/settings64.sh && cd /mnt/c/Users/%username%/Documents/ISE_Projects && nohup ise &"

Durch die Verkettung von Befehlen mit && konnte ich vor dem Starten des Programms die gewünschte Umgebung und das gewünschte Arbeitsverzeichnis erzwingen.

Die Ersetzung von %username% scheint zu funktionieren.

verwandte Informationen