如何使用适用于 Linux 的 Windows 子系统运行 GUI 应用程序

use*_*414 12 linux firefox windows-subsystem-for-linux

我运行的是 Windows 10 计算机,并且最近安装了适用于 Linux 的 Windows 子系统。这通常会创建一个没有“显示”环境的单个终端。看起来 Tmux 可以用来获取多个终端,但这不允许您使用任何类型的图形显示。

我想通过 Windows Subsystem for Linux 打开 Linux 浏览器,例如 Firefox。

我尝试了这里的建议,但我收到错误:

no DISPLAY environment variable specified
Run Code Online (Sandbox Code Playgroud)

har*_*ymc 8

请参阅 Ubuntu wiki运行图形应用程序

您需要在 Windows 上安装X-server,以便从 Windows启动 以供 WSL 图形应用程序使用。

您可以使用 X410、VcXsrv、MobaXTerm、Cygwin/C、Xming、Cygwin X、vcXsrv 中的任何一个。

如果图形应用程序无法连接到正在运行的 X 服务器,请在启动应用程序之前自动将以下命令粘贴到终端,或者在每次登录时通过将它们添加到来设置它们~/.bashrc

export DISPLAY=:0 # in WSL 1
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 # in WSL 2
export LIBGL_ALWAYS_INDIRECT=1
Run Code Online (Sandbox Code Playgroud)

另一篇有用的文章是 在 Linux 上的 Windows 子系统上运行图形程序


Not*_*1ds 5

添加一个答案,其中包含比最初提出问题时可用的最新信息,主要是因为我链接到此问题/答案以获取其他重复项(此处和 Stack Overflow 上,这通常是一个偏离主题的问题)。

有(至少)三个选择:

  • 随着 WSL 1.0.0(WSL via Microsoft Store 应用程序)的发布,Windows 10 和 Windows 11 用户都可以完全访问 WSLg,这允许 Linux GUI 应用程序(X 或 Wayland)直接在 WSL2 上运行,无需额外配置。在 1.0.0 之前,此功能仅限于 Windows 11 用户。

    Windows 10 用户需要使用以.2311或更高版本结尾的版本,这目前意味着安装KB5020030。如果您的内部版本号的最后四位数字低于 2311,请确保您的 Windows 是最新的,然后在可选更新中查找 KB5020030 。

    一旦安装了最新的 Windows 10 或 Windows 11 系统,您可以从其Microsoft Store 页面安装 WSL ,或者...

    wsl --install
    # or, if already installed
    wsl --update
    # confirm 1.0.0 or later via:
    wsl --version
    
    Run Code Online (Sandbox Code Playgroud)
  • harrymc 提供的一种传统替代方案是安装第三方 X 服务器。我不会重复有关如何执行此操作的信息,因为该答案已经涵盖了该信息,尽管我会说这export DISPLAY=$(hostname).local:0通常会起作用,并且更简洁。正如我在这个答案中详细介绍的那样,这使用了 mDNS 。

  • 最后,如果您想在 WSL 下运行 Linux桌面,您可能需要考虑 RDP。您可以xrdp使用 Windows 远程桌面连接安装并访问 Linux 桌面。请参阅此询问 Ubuntu 答案中的步骤。请注意,尽管xfce答案包含有关运行 Gnome 桌面等更复杂的东西的更多详细信息,但这确实是必要的。