Problème
Sudo notify-send Test "Hello World"
Affiche une notification comme prévu.
notify-send Test "Hello World"
N'affiche pas de notification.
Informations complémentaires
Ubuntu version 16.04.
Les notifications semblent utiliser notify-osd au lieu de notification-daemon. L'exécution de notify-send apparaît pour lancer un processus notify-osd sous l'utilisateur qui a exécuté notify-send. Je ne suis pas sûr de ce qu'est Dbus.
Aucun message d'erreur
Il n'y a pas d'erreur dans le syslog. Lorsque je lance le code suivant, aucun message d'erreur ne se produit.
#include <libnotify/notify.h>
#include <stdio.h>
int main() {
gboolean x = notify_init ("Hello world!");
printf( "notify_init: %d\n", x );
NotifyNotification * Hello = notify_notification_new ("Hello world", "This is an example notification.", "dialog-information");
GError *err = NULL;
x = notify_notification_show (Hello, &err);
printf( "notify_notification_show: %d\n", x );
if(err != NULL) {
printf("Error detected!\n");
printf("Error message:%s\n", err->message);
}
else {
printf("No error detected.\n");
}
g_object_unref(G_OBJECT(Hello));
notify_uninit();
return 0;
}
Je ne sais pas ce que je fais. Merci pour l'aide.
Python Notify
Dans le passé, j’utilisais un programme python avec des notifications fonctionnelles. J'ai testé une notification bonjour monde et cela fonctionne sans Sudo!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import gi
gi.require_version('Notify', '0.7')
from gi.repository import Notify
Notify.init("test")
n = Notify.Notification.new('test', 'test2')
n.set_urgency(Notify.Urgency.CRITICAL)
n.show()
Code de http://www.devdungeon.com/content/desktop-notifications-python-libnotify
Je ne sais pas pourquoi cela fonctionne. Le python Notify est juste en train d'envelopper la bibliothèque utilisée dans l'exemple C. Je préférerais ne pas utiliser python mais je le ferai si je le dois.
Modifier
Le problème est à nouveau survenu. Résolu en ajoutant l'urgence critique.
Le redémarrage a résolu le problème. Pas certain de pourquoi.
Edit Le problème est survenu à nouveau. L'utilisation de l'urgence critique a provoqué l'affichage de la notification. La commande est:
notify-send --urgency="critical" "asdf"
Avec cette réponse j'ai "corrigé" le problème. Pas de Sudo
nécessaire maintenant. Il faut redéfinir la variable d’environnement DBUS_SESSION_BUS_ADDRESS
:
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
Mais, comme demandé ici :
notify-send -u critical "Nice title" "Nice description"
fonctionne bien maisnotify-send -u normal "Nice title" "Nice description"
ne fonctionne pas.Utiliser aussi -i
de cette manière semble obsolète: notify-send -i "notification-network-wireless-full" "Summary" "Body"
. Peut-être devrions-nous déposer un bogue .