我在通过 Windows 任务栏上的按钮从 VcXsrv 下的 WSL 安装中启动
xfce4-terminal
时遇到了一些困难。完成后,除了 xfce4-terminal 之外,我不需要任何 DOS 框/控制台/终端。我已经可以使用了,但是它太丑了。有人有更干净的方法吗?
这就是我所做的工作:我使用此目标在桌面上创建了一个 Windows 快捷方式(全部在一行中,为了便于阅读,这里用换行符分隔):
C:\Windows\System32\wscript.exe
\\wsl$\Ubuntu-20.04\home\peter\bin\windows\startTerminal.vbs
startTerminal.vbs
的灵感来自静默运行批处理文件并隐藏控制台窗口的10种方法•Raymond.CC(不需要为此安装单独程序的少数解决方案之一!),它包含:
CreateObject("Wscript.Shell").Run "C:\Windows\System32\wsl.exe -u peter --exec /home/peter/bin/windows/startTerminal.sh",0,True
和
startTerminal.sh
包含:
export DISPLAY=localhost:0.0
xfce4-terminal --command=/bin/zsh
设置 DISPLAY 显然是必需的,即使我在 ~/.zshrc 中设置了 DISPLAY 环境。除非您运行登录 shell,否则 wsl.exe 显然不会执行此操作。
一旦所有这些都正常工作,我可以将快捷方式拖动到任务栏并单击那里。
我数了数,有 3 个,三个文件合作来实现这个简单的目标?我可以在不安装外部程序的情况下将其限制为一两个吗?
是的,我认为您可以在一个快捷方式文件中执行我所做的操作。我将分享对我有用的方法,然后你就必须摆弄你的程序了。
尝试将所有命令放入快捷方式链接文件的目标部分。
步骤1.右键单击桌面,然后单击“新建”,然后单击“快捷方式”,然后将其命名为(LaunchXFCE4)
步骤 2. 右键单击 LaunchXFCE4 选择属性
第 3 步。在“目标”部分中输入所有启动序列
步骤 4. 右键单击 LaunchXFCE4 选择固定到任务栏
我正在使用此代码在 WSL 2 上启动 Emacs 27.1,并在 Windows 10 上使用 Ubuntu 20.10,您也许可以修改该代码。
C:\Windows\System32\wsl.exe --distribution Ubuntu20 bash -c "export DISPLAY=$(ip route | awk '{print $3; exit}'):0 && export LIBGL_ALWAYS_INDIRECT=1 && export XCURSOR_SIZE=16 && setsid emacs"
第一个导出显示与您的 localhost:0.0 类似,因此替换它或尝试我的。也许你的 xfce4 取代了我的 emacs。阅读这篇文章了解双与号。所以可能是这个
C:\Windows\System32\wsl.exe --distribution Ubuntu20 bash -c "export DISPLAY=localhost:0.0 && export LIBGL_ALWAYS_INDIRECT=1 && export XCURSOR_SIZE=16 && setsid xfce4-terminal --command=/bin/zsh"
注意,我的 VcXsrv 在 Windows 启动时启动,方法是在我的 C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 中放置 config.xlaunch 的快捷方式。
顺便说一句,根据他们的博客
,微软将在几个月内为 WSL 提供 GUIWSL 中的 GUI 应用程序支持正在成为现实!我们越来越接近 初始预览版并很高兴地宣布推出 Windows 预览版 未来几个月内的内部人士。
我通过以下方式删除了对
startTerminal.sh
文件的需求:
编辑
startTerminal.vbs
以包含:
CreateObject("Wscript.Shell").Run "C:\Windows\System32\wsl.exe -u peter bash -l -c xfce4-terminal",0,True
然后我创建了一个
~/.bash_profile
来设置 $DISPLAY
变量,无论如何这可能应该完成:
$ cat .bash_profile
if [ -z "$DISPLAY" ]; then
export DISPLAY=:0
fi
现在有了快捷方式和启动它的
startTerminal.vbs
。还是不太优雅...
在尝试了@Saj 的答案后,这对我不起作用,我得到了以下结果:
C:\Windows\System32\wsl.exe --distribution Ubuntu-20.04 bash -c "export DISPLAY=$((route.exe print | Select-String 0.0.0.0 | select -first 1) -Split "\s+" | select -Index 4):0.0 && export LIBGL_ALWAYS_INDIRECT=1 && setsid emacs"
请注意,我的问题是它无法在括号内使用 bash 命令(grep、awk)
环境:Windows 10 上的 WSL2
WSL-2 是 Windows 中为数不多的优秀补充之一,它现在的功能更加强大。 它是 Win 10 和 Win 11 后期版本的一部分。 以下是如何优雅地创建终端窗口,将终端替换为您想要的任何 X 应用程序。
C:\Windows\System32\wslg.exe -u root -- /usr/bin/xfce4-terminal
如果您有多个发行版,请使用它,例如:“-d Debian”就是这样。您可以给它一个更好的图标并命名。 它将像 Windows 应用程序一样启动该应用程序。
“C:\Program Files\WSL\wslg.exe”-d Ubuntu --cd“~”--xsnow
Windows 本身具有功能。 xsnow ist nicht xs now, sondern das Winterschneeprogramm :)