web-dev-qa-db-fra.com

notify-send ne fonctionne qu'avec sudo

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.

2
aco

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"
1
aco

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 mais
  • notify-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 .

0
Pablo Bianchi