How do I disable Dunst and go back to notify-osd?

I installed i3, which recommends dunst, but I'm not using i3 at the moment, and the dunst notifications don't really fit with Unity. I'd rather not uninstall dunst totally, since I might want to start using it at some point in the future; is there a way to switch back to notify-osd without uninstalling dunst?


Solution 1:

The notification daemon is started by dbus-daemon when a notification is sent. You can see the currently-active notification daemon (assuming there is one) by searching for the org.freedesktop.Notifications bus name on the session bus in D-Feet; you can also examine journalctl output to see what dbus-daemon thinks it's doing, and why (including e.g. which application sent a notification).

dbus-daemon looks at the service files in /usr/share/dbus-1/services/ to find the service to run for each bus name. The file org.freedesktop.Notifications.service is the file for notify-osd (on default Ubuntu 18.04), and dunst installs a new service at org.knopwob.dunst.service. Both files have a Name of org.freedesktop.Notifications, meaning that they're both capable of handling notifications.

Unfortunately, dbus-daemon isn't very clever when it comes to working out which service to start when there are multiple possible services for a given bus name. As of 2018, it just picks the first one it finds; there's been a feature request in Red Hat Bugzilla about this for almost a decade. The only real solutions appear to be:

  • write your own service that picks whether to start notify-osd or dunst based on some factor (covered in this answer), or
  • move or delete all but one of the conflicting service files.

Moving the conflicting service files is much easier in this case: just run sudo mv /usr/share/dbus-1/services/org.knopwob.dunst.service{,.disabled}. If you want to start using dunst again, it's easy enough to rename the file back to what it was originally.