Eu percebo que estou dois anos atrasado para a festa, mas se alguém encontrar esse problema, aqui está uma solução que usará o notify-osd quando conectado ao Unity, e o dunst quando rodando o i3.
Se você quer apenas manter o dunst instalado, mas não invocar automaticamente via DBus pule para a seção Quick Hack.
Dunst no i3, notifique-os em Unity
Etapa 1
Queremos substituir os comportamentos de /usr/share/dbus-1/services/org.freedesktop.Notifications.service
e, mais importante, /usr/share/dbus-1/services/org.knopwob.dunst.service
.
Como o Dbus analisa $ XDG_DATA_HOME ao procurar por arquivos de serviço, e o Ubuntu, por algum motivo, não define essa variável de ambiente, precisamos fazer isso por conta própria:
echo 'export XDG_DATA_HOME=${XDG_DATA_HOME:="$HOME/.local/share"}' >> ~/.profile
Etapa 2
Precisamos criar nosso arquivo de serviço:
mkdir -p $HOME/.local/share/dbus-1/services
nano $HOME/.local/share/dbus-1/services/usernotify.service
Faça o arquivo parecer assim:
[D-BUS Service]
Name=org.freedesktop.Notifications
Exec=/usr/bin/my_notifier
Etapa 3
Crie o script mencionado em seu arquivo D-BUS que invoca dunst se o i3 estiver em execução, caso contrário, notifique-osd:
sudo nano /usr/bin/my_notifier
Faça com que pareça:
#!/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
Torne-o executável:
sudo chmod a+x /usr/bin/my_notifier
Etapa 4
Deve ser isso. Efetue logout e, em seguida, efetue login novamente. Teste-o em Unity e em i3 executando
notify-send foo bar
Corte rápido
Se você quiser usar exclusivamente o notify-osd, basta editar /usr/share/dbus-1/services/org.knopwob.dunst.service
de acordo:
[D-BUS Service]
Name=org.freedesktop.Notifications
#Exec=/usr/bin/dunst
Exec=/usr/lib/x86_64-linux-gnu/notify-osd