我安装了i3,它推荐dunst,但我目前没有使用 i3,并且 dunst 通知并不真正适合 Unity。我宁愿不完全卸载 dunst,因为我可能想在将来的某个时候开始使用它;有没有办法在不卸载 dunst 的情况下切换回 notify-osd?
通知守护进程在发送通知时由 dbus-daemon 启动。您可以通过org.freedesktop.Notifications在 D-Feet 中搜索会话总线上的总线名称来查看当前活动的通知守护进程(假设有一个);您还可以检查journalctl输出以查看 dbus-daemon 认为它在做什么,以及为什么(包括例如哪个应用程序发送了通知)。
dbus-daemon 查看服务文件/usr/share/dbus-1/services/以找到要为每个总线名称运行的服务。该文件org.freedesktop.Notifications.service是用于 notify-osd 的文件(在默认的 Ubuntu 18.04 上),并且 dunst 在org.knopwob.dunst.service. 这两个文件都有一个Nameof org.freedesktop.Notifications,这意味着它们都能够处理通知。
不幸的是,当给定总线名称有多个可能的服务时,dbus-daemon 在确定要启动哪个服务时并不是很聪明。截至 2018 年,它只选择它找到的第一个;近十年来,Red Hat Bugzilla 中一直有一个关于此的功能请求。唯一真正的解决方案似乎是:
在这种情况下,移动冲突的服务文件要容易得多:只需运行sudo mv /usr/share/dbus-1/services/org.knopwob.dunst.service{,.disabled}. 如果您想再次开始使用 dunst,可以很容易地将文件重命名为原来的名称。