我在我的机器上测试了 i3wm(sudo apt-get install i3
我运行了它,并从登录屏幕中选择了 i3),过了一会儿,我决定切换回 Unity。切换回来后,我注意到尽管我使用的是 Unity,但通知仍然出现在右上角,类似于 i3。
我真的很希望它使用普通的 Unity 通知气泡。
我研究了一下,结果发现使用的是 而notify-osd
不是dunst
。
我尝试使用和编辑该文件,但它具有预期的sudo vim /usr/share/dbus-1/services/org.freedesktop.Notifications.service
正确行(即)。Exec=/usr/lib/x86_64-linux-gnu/notify-osd
我也尝试过unity-tweak-tool --reset-unity
但是没有任何效果。
我可以恢复正常通知吗?如能得到任何帮助我将不胜感激。谢谢 :)
编辑:我可以通过删除 i3wm 本身(和 dunst)来恢复正常通知。我实际上想问的是:是否可以在系统上保留 i3 和 dunst 的同时更改为正常通知?
注意:这不是重复的Notify-osd 通知在左上角显示为无主题通知。解决方案是删除 dunst,我想保留 dunst,并在选择 i3 时让其工作,并在选择 Unity 时让 notify-osd 工作。
答案1
我意识到我已经迟到了两年,但是如果其他人遇到这个问题,这里有一个解决方案,当登录 Unity 时使用notify-osd,当运行 i3 时使用dunst。
如果您只想保留 dunst 安装,但不想通过 DBus 自动调用它,请跳至快速破解部分。
i3 中的 Dunst,Unity 中的 notify-osd
步骤1
我们想要覆盖的行为,/usr/share/dbus-1/services/org.freedesktop.Notifications.service
更重要的是/usr/share/dbus-1/services/org.knopwob.dunst.service
。
由于 Dbus 在搜索服务文件时会查看 $XDG_DATA_HOME,而 Ubuntu 由于某种原因没有设置该环境变量,因此我们需要自己执行此操作:
echo 'export XDG_DATA_HOME=${XDG_DATA_HOME:="$HOME/.local/share"}' >> ~/.profile
第2步
我们需要创建我们的服务文件:
mkdir -p $HOME/.local/share/dbus-1/services
nano $HOME/.local/share/dbus-1/services/usernotify.service
使文件看起来像这样:
[D-BUS Service]
Name=org.freedesktop.Notifications
Exec=/usr/bin/my_notifier
步骤3
创建 D-BUS 文件中引用的脚本,如果 i3 正在运行,则调用 dunst,否则调用 noty-osd:
sudo nano /usr/bin/my_notifier
让它看起来像这样:
#!/bin/bash
set -euo pipefail
if pgrep -x i3 >/dev/null; then
/usr/bin/dunst
else
/usr/lib/x86_64-linux-gnu/notify-osd
fi
使其可执行:
sudo chmod a+x /usr/bin/my_notifier
步骤4
就这些了。注销然后重新登录。在 Unity 和 i3 中运行以下命令进行测试:
notify-send foo bar
快速破解
如果您只想使用notify-osd,则只需进行/usr/share/dbus-1/services/org.knopwob.dunst.service
相应的编辑即可:
[D-BUS Service]
Name=org.freedesktop.Notifications
#Exec=/usr/bin/dunst
Exec=/usr/lib/x86_64-linux-gnu/notify-osd
答案2
sudo apt-get purge dunst
这样就应该可以将其去除。