我试图在 Arch 上运行一个带有 GUI 的程序,但它抱怨它无法初始化 GTK。同样的程序在 Ubuntu 上运行得非常好。两个发行版都DISPLAY
设置为:0
.
图形程序几天前按预期工作,我不记得更改任何可能相关的内容。
我尝试使用 启动 X 服务器XLaunch
,但似乎没有任何效果。
重新启动 WSL 和我的计算机并没有解决问题,更新 Arch 或 WSL 也没有解决问题。
启动不同的图形程序(例如gtkwave
或xterm
)具有相同的结果。(xterm 说Can't open display :0
)
回到过去是行不通的,因为我无法使用时间机器。
这些程序在 Ubuntu 中确实按预期运行,但如果可能的话,我更喜欢使用 Arch。
已在评论中解决(至少有解决方法)。我现在已经看到上周似乎有 3 个相关问题,所以可能存在重大问题。
我相信有一个共同的主题:
如果您至少没有前两个,那么您可能正在考虑不同的问题。我猜测这个问题可能会出现在 Ubuntu 上,但是该发行版上当前 Systemd 加载顺序的某些内容似乎正在努力避免大部分问题。
对于这个特定问题,该问题是在 WSL2 版本 2.1.4 上的 Arch 内运行 Systemd 时引起的,禁用 Systemd 后该问题得到解决。
这导致...
选项 1:禁用 Systemd
如果您在 WSL 中不需要 Systemd。跑步:
如果你有:
然后注释掉该
system
行或将其设置为false
。关闭 WSL(或终止实例)并重新启动。这可以通过 PowerShell 完成:
选项 2:为 X11 套接字创建链接
如果您仍然需要或想要运行 Systemd,超级用户上有另一个答案,我认为该解决方案可能会解决该问题。该答案的解决方案是:
虽然其他答案没有提到这一点,但可能需要在每次 WSL 重新启动后完成。虽然您可以通过类似的方法自动执行此操作
~/.bashrc
,但我建议偶尔检查一下是否有问题已修复的报告,以便您将来可以停止此手动链接。这有可能(但预计不会)干扰其他行为。作为参考,这个答案(目前已关闭,但可能会在某个时候由 Roomba 提供)是另一种情况,启用了 WSL 更新、OpenSUSE Tumbleweed 和 Systemd。禁用 Systemd 也解决了这个问题。