如何在 Windows 10 中建立捷徑以在 VcXsrv 中啟動 WSL2 GUI 應用程式

如何在 Windows 10 中建立捷徑以在 VcXsrv 中啟動 WSL2 GUI 應用程式

我正在嘗試為 Firefox 創建從 WSL2 到 Windows 10 Home 的快捷方式,但我無法做到這一點。我正在使用 VcXsrv,我已將其設定為自動啟動。我無法使用 WSLg,因為我使用的不是 Windows 11。

您是否可以在 Windows 快捷方式中使用 Firefox 等應用程式而無需手動匯出DISPLAY

答案1

聽起來像你:

  • 已經DISPLAY正確設定了變量,並且可以從 VcXsrv 中的命令列運行 Firefox。這是一個很好的開始。

  • 但已將DISPLAY變數匯出到 中~/.bashrc,因為您提到必須手動匯出它。

如果是這種情況,那麼您首先需要在啟動配置中匯出該變數。如果您已經完成這部分,請跳至“快捷方式命令列”下面的部分。

在啟動時導出 DISPLAY

將以下內容新增至您的~/.bashrc

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

它使用 mDNS 根據我的資訊取得正確的 IP 位址在此回答該主題。如果您有其他DISPLAY適合您的設置,則可以使用它,但我發現hostname在大多數情況下基於方法是最簡單的。

然後:

source ~/.bashrc

讓它重新讀取配置。您也可以重新啟動 shell 來確認。然後確保 Firefox 運行。

快捷方式命令列

當您處於互動的shell,因為 rc 檔案源自互動式 shell。但是,當您透過快捷方式啟動 Firefox 時,您需要使用該wsl.exe命令,並且預設情況下不是互動式(或登入)shell。

根據記憶,嘗試將 Windows 快捷方式設定為:

wsl -e bash -lic "firefox"

這將運行 Bash:

  • 作為登入 shell ( -l),它將取得您的~/.bash_profile
  • 作為一個互動式 shell ( -i),它將為您提供~/.bashrc
  • 並運行指令 ( -c) firefox

答案2

我建議使用以下語法:

wsl -e bash -lic "nohup firefox &"

Linux 中的「&」表示「在背景啟動」。如果沒有“&”,我們的活動視窗將具有父進程(bash),如果有“&”但沒有“nohup”,我們的進程將與父進程一起結束(bash 視窗)。

使用“nohup”和“&”看起來都很漂亮——只有 Firefox 進程。

答案3

進一步:

Windows 捷徑(目標指令)

在我的特殊情況下,即 Windows 10 和 WSL2 Debian,這對我來說效果最好、最可靠。

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

注意(如果從 GWSL 遷移)

如果您在升級到 WSL2 之前曾經使用 GWSL 啟動 GUI 應用程序,請務必仔細檢查您的~/.bashrc& ~/.profile(或~/.bash_profile)文件,以刪除 GWSL 放置在那裡的任何配置,這可能會無意中將DISPLAY環境變數覆蓋為包含您的名稱伺服器的無效內容IP 位址(來自/etc/resolve.conf)。

就我而言,舊版 GWSL 配置設定DISPLAY1.1.1.1:0.0,而不是:0導致事情中斷。

答案4

在嘗試讓 Xilinx IDE 在 WSL 中運行所需的環境和我的工作目錄時,我得到了以下結果:

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

使用 && 連結命令允許我在啟動程式之前強制使用所需的環境和工作目錄。

%username% 替換似乎有效。

相關內容