我正在尝试为 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 根据我的在这里回答这个问题。如果您有其他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 快捷方式(目标命令)
在我的特定环境下,即带有 WSL2 Debian 的 Windows 10,这是最有效、最可靠的方法。
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 配置设置DISPLAY
为1.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% 替换似乎有效。