我是否为每次登录启动应用程序 XLaunch 以在 Windows 10 专业版的 Ubuntu WSL 中使用 GUI?

who*_*ami 12 windows gui ubuntu windows-subsystem-for-linux

我在 Windows 10 专业版中有 Ubuntu 18.04 LTS WSL。为了在 Linux bash shell 中设置图形用户界面,我安装了 XLaunch。但是要在我的 WSL 中为每次登录我的电脑使用 GUI,我需要启动 XLaunch。是否有可能一次性启动 XLaunch,并且只要我在 Windows 10 中使用 bash shell,它就会一直存在。

谢谢,

Bis*_*iyo 21

让我们先了解一下背景。要配置通用 X11 连接,我们必须DISPLAY使用此命令在 WSL 中设置变量export DISPLAY=:0。也不要忘记使用这个启用直接渲染的export LIBGL_ALWAYS_INDIRECT=1命令。如果这些都完成了,那么进入下一步:配置 VcxSrv。

VcxSrv 有许多命令行选项(XWin 手册页)。您可以使用vcxsrv.exe --help命令获取选项详细信息。对于 WSL,主要需要三个选项(可以更改)。

-multiwindow
在多窗口模式下运行服务器。

-clipboard
启用 [禁用] 剪贴板集成。默认启用。

-wgl
启用 GLX 扩展以将本机 Windows WGL 接口用于硬件加速的 OpenGL。

命令将是:vcxsrv.exe :0 -multiwindow -clipboard -wgl

现在最后一步是在 WSL 启动之前启动它。可能有多种方法可以做到这一点。这里我提到其中两个。

  1. 使用之前的命令创建快捷方式。您应该在该命令中提及完整路径。例如E:\VcXSrv\vcxsrv.exe :0 -multiwindow -clipboard -wgl。这是一个屏幕截图。

vcxsrv_shortcut

然后将该快捷方式放在%AppData%\Microsoft\Windows\Start Menu\Programs\Startup文件夹中,以便在 PC 启动时自动启动 VcxSrv。

  1. 另一种方法是以管理员身份使用此命令在注册表中添加完整命令:
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V VcxSrv /D "E:\VcXSrv\vcxsrv.exe :0 -multiwindow -clipboard -wgl"
Run Code Online (Sandbox Code Playgroud)

遵循上述两种方法中的任何一种,而不是两者。VcxSrv.exe将在您重新启动 PC 时启动。


Mar*_*vic 7

  1. %AppData%\Microsoft\Windows\Start Menu\Programs\Startup在文件资源管理器中打开

  2. 在那里创建一个名为config.xlaunch以下内容的新文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <XLaunch WindowMode="MultiWindow" ClientMode="NoClient" LocalClient="False" Display="0" LocalProgram="xcalc" RemoteProgram="xterm" RemotePassword="" PrivateKey="" RemoteHost="" RemoteUser="" XDMCPHost="" XDMCPBroadcast="False" XDMCPIndirect="False" Clipboard="True" ClipboardPrimary="False" ExtraParams="" Wgl="True" DisableAC="True" XDMCPTerminate="False"/>
    
    Run Code Online (Sandbox Code Playgroud)


小智 6

我发现一个简单有效的解决方案:

  1. 运行 XLaunch,选择所需的设置,然后在“完成”之前单击“保存配置”。

  2. 将配置文件保存在“启动”文件夹中,您可以通过点击Windows key + r并运行来找到该文件shell:startup

这将在 Windows 启动时启动具有保存的配置的 Xserver。


对于 WSL2,请在启动 Ubuntu/WSL 时查看此问题进行.bashrc设置DISPLAY,该问题还链接到本小节以让 WSL2 子网通过 Windows 防火墙。