我在 Windows 上使用 WSL2,目前主要是为了启动我自定义的 emacs。我启动 emacs 的工作流程有点麻烦。每次启动后,我必须启动具有多个监视器设置的 Xsrv 应用程序。然后打开新的windows终端,打开Ubuntu 18.04,启动Xfce4图形环境。然后,在这个图形环境中启动一个终端,最后使用emacs
命令启动 emacs。
正如您所注意到的,这些步骤只是为了让 emacs 的图形版本运行起来,它可以在多个监视器上使用。我的问题是如何加快这一进程。现在我有创建一些自动热键脚本并检查是否可以默认使用 WSL2 启动图形会话的想法。非常感谢,如果您能给我一些建议。这些想法已经是我能做的最好的了,还是有一些其他的技巧可以让我用很少的动作来运行 emacs 的图形版本?
您可以使用您的设置自动启动 VcXsrv。这就是我所做的。
第 1 部分:让 VcXsrv 自动启动
当你运行 vcxsrv 时,它每次都会弹出一个配置屏幕。
当您到达最后一个配置屏幕时,可以选择保存它。然后,您将创建一个指向该已保存配置的快捷方式并将其置于启动状态。 这是一篇 SuperUser 帖子,讨论了自动启动 vcxsrv 的不同方法。
第 2 部分:导出显示
x11 支持将窗口命令“转发”到不同的 IP 地址(和桌面),以允许 Windows 远程桌面之类的东西……在许多/大多数方面更好……但不是全部。这个功能从一开始就在 x11 中。
要导出您的显示,您需要在启动 x11 应用程序之前设置 DISPLAY 环境变量。通常,完成此操作的最佳方法是将导出命令放入您的 ~/.bashrc 文件中(假设您使用的是 bash),这样就不需要每次都执行此操作。该行看起来像
export DISPLAY=<ip_address>:0.0
0.0 指的是您的目标桌面,但为了避免混淆,只需使用 0.0。完成此操作的一种快速方法是在 bash 终端上运行以下命令。
echo "export DISPLAY=localhost:0.0" >> ~/.bashrc
source ~/.bashrc
(或者你可以在这里重启你的终端)您现在应该准备好启动任何您想要的 x11 应用程序并让它出现在 Windows 中。
我会指出,如果您在使用任何特定应用程序时遇到故障,请尝试在 VcXsrv 中禁用 open gl 支持。在禁用此设置之前,我无法启动 VisualStudio Code。
第 3 部分:运行 Linux x11 的 Windows 快捷方式!
bash.exe -c "DISPLAY=127.0.0.1:0.0 xemacs"
成品
Señor CMasMas的答案在所有方面都是正确的。但如果你在 WSL 2
localhost
上将无法工作。至少,在撰写本文时它不起作用。(有传言说 WSL 团队正在努力解决这个问题。)原因是 WSL 2 将您的 Ubuntu(或其他)放在单独的(虚拟)机器中,而不是作为 Windows 机器的一部分(就像 WSL 1 所做的那样)。
要解决此问题,您需要计算
DISPLAY
如下:一个很好的方法是把它放在
~/.bashrc
文件中,然后忘记它。但是,WSL 的登录必须是登录 shell,否则将不会运行。如果您使用指向 的链接
bash.exe
,这是更简单的路线,我认为,您的命令应该看起来像这样这
-i
意味着 shell 应该是交互式的,这意味着它应该执行完整的登录脚本。但是,只要命令(emacs)正在运行,bash 窗口就会打开。当我安装了 Cygwin 时,我利用了它的
run
命令,该命令启动然后消失。所以这是我的命令