我有一个启用了systemd的 WSL Ubuntu 系统。我还配置snap
并安装了我的Emacs
using snap。
当我从 WSL 控制台启动 Emacs 时,我可以看到 GUI 并使用 Emacs。但是我收到以下错误和消息。
Emacs 实例似乎功能齐全。所以,我认为错误/警告并不重要。但我想知道我是否可以修复或禁用触发它们的任何功能。
(emacs:587975): dbind-WARNING **: 18:37:34.363: AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
(emacs:587975): GLib-GIO-CRITICAL **: 18:37:34.405: g_settings_schema_source_lookup: assertion 'source != NULL' failed
简短回答:
更多详情:
错误消息是由于缺少一些 D-bus 服务造成的。通常,这些服务会在桌面环境(Ubuntu Desktop/Gnome、Xfce4 等)下安装和启动,但在 WSL 中不会发生这种情况。WSL 的“桌面”实际上就是 Windows 本身1。虽然可以在WSL2 中运行 Linux 桌面(请参阅其他答案),但它很老套,不需要回答您的特定问题。
要修复警告,您可能需要做一些事情。首先,“必须具备”——安装缺少的服务。根据警告,Emacs 试图访问的服务是:
GIO:Gnome I/O 框架。这通常是使用 GVFS(Gnome 虚拟文件系统)的应用程序的依赖项,该服务允许最终用户访问用户空间中的某些虚拟文件系统。例如,Ubuntu 中的“垃圾桶”功能使用 GVFS,因此当您从 GVFS/GIO 应用程序中删除文件时,它会被移至垃圾箱,而不是立即永久删除。显然,Emacs 以某种方式使用了 GIO 和/或 GVFS(尽管我不知道它是否使用了 Trash 功能)。
AT-SPI:辅助技术服务提供商接口。老实说——我必须自己查一下这个。它是辅助功能的接口,如屏幕阅读器、盲文、眼动仪等。如果没有一些更高级别的服务(如屏幕阅读器),它可能不会被使用。但老实说,这与 GIO 相同——通常是使用GIO 的一些更高级别的功能(如 GVFS)。
因此,要解决错误消息:
这将安装 GVFS(它将包括 GIO 作为依赖项)和 AT-SPI。
就个人而言,我看到了一些其他错误,但我认为这些是由于我自己的配置问题造成的,尤其是根据您的评论。现在,我正在编辑此答案中的其他错误消息。
脚注
1从技术上讲,它是 Weston,它运行一个 RDP/Rails shell,该 shell 使用 Windows 远程桌面客户端在 Windows 桌面上查看应用程序。然而,对于大多数用户来说,最终结果只是看起来 Linux GUI 应用程序正在 Windows 桌面上运行。