如何优雅地创建在X下启动WSL程序的Windows快捷方式

Pet*_*rch 12 windows x11 windows-subsystem-for-linux

xfce4-terminal我在通过 Windows 任务栏上的按钮从 VcXsrv 下的 WSL 安装启动时遇到了一些困难。完成后,除了 xfce4-terminal 之外,我不需要任何 DOS 框/控制台/终端。我已经可以使用了,但是它太丑了。有人有更干净的方法吗?

\n

这是我所做的工作:我在桌面上使用此目标创建了一个 Windows 快捷方式(全部在一行中,为了便于阅读,用换行符分隔):

\n
C:\\Windows\\System32\\wscript.exe\n    \\\\wsl$\\Ubuntu-20.04\\home\\peter\\bin\\windows\\startTerminal.vbs\n
Run Code Online (Sandbox Code Playgroud)\n

startTerminal.vbs灵感来自10 Ways To Run Batch Files And Hide The Console Window \xe2\x80\xa2 Raymond.CC(少数不需要为此安装单独程序的解决方案之一!),它包含:

\n
CreateObject("Wscript.Shell").Run "C:\\Windows\\System32\\wsl.exe -u peter --exec /home/peter/bin/windows/startTerminal.sh",0,True\n
Run Code Online (Sandbox Code Playgroud)\n

并startTerminal.sh包含:

\n
export DISPLAY=localhost:0.0\nxfce4-terminal --command=/bin/zsh\n
Run Code Online (Sandbox Code Playgroud)\n

尽管我在 ~/.zshrc 中设置了 DISPLAY 环境,但显然需要设置 DISPLAY。除非您运行登录 shell,否则 wsl.exe 显然不会执行此操作。

\n

一旦所有这些都正常工作,我可以将快捷方式拖到任务栏并单击那里。

\n

我数数3,三个文件合作来实现这个简单的目标?我可以在不安装外部程序的情况下将其限制为一两个吗?

\n

Saj*_*Saj 11

是的,我认为您可以在一个快捷方式文件中执行我所做的操作。我将分享对我有用的内容,然后你就必须摆弄你的程序了。

尝试将所有命令放入快捷方式链接文件的目标部分。

步骤 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"
Run Code Online (Sandbox Code Playgroud)

第一个导出显示与您的 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"
Run Code Online (Sandbox Code Playgroud)

请注意,我的 VcXsrv 在 Windows 启动时启动,方法是在我的 C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 中放置 config.xlaunch 的快捷方式。

顺便说一下,根据微软的博客,微软将在几个月内为 WSL 提供 GUI

WSL 中的 GUI 应用程序支持正在成为现实!我们距离初始预览版越来越近,并很高兴地宣布在接下来的几个月内为 Windows Insiders 推出预览版。


Pet*_*rch 3

我通过以下方式消除了对文件的需求startTerminal.sh:

编辑startTerminal.vbs以包含:

CreateObject("Wscript.Shell").Run "C:\Windows\System32\wsl.exe -u peter bash -l -c xfce4-terminal",0,True
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个~/.bash_profile来设置$DISPLAY变量,无论如何这可能应该完成:

$ cat .bash_profile
if [ -z "$DISPLAY" ]; then 
    export DISPLAY=:0
fi
Run Code Online (Sandbox Code Playgroud)

现在有了快捷方式和startTerminal.vbs启动它的 a 。它仍然不是很优雅......