it-swarm.com.de

notify-send funktioniert nur mit sudo

Problem

Sudo notify-send Test "Hello World"

Zeigt eine Benachrichtigung wie erwartet an.

notify-send Test "Hello World"

Zeigt keine Benachrichtigung an.

Weitere Informationen

Ubuntu Version 16.04.

Die Benachrichtigungen scheinen notify-osd anstelle von notification-daemon zu verwenden. Das Ausführen von notify-send scheint einen notify-osd-Prozess unter dem Benutzer zu starten, der notify-send ausgeführt hat. Ich bin nicht sicher, was dbus ist.

Keine Fehlermeldungen

Es gibt keine Fehler im Syslog. Wenn ich den folgenden Code ausführe, treten keine Fehlermeldungen auf.

#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;
}

Ich weiß nicht was ich tue. Danke für die Hilfe.

Python Notify

In der Vergangenheit habe ich ein python Programm mit funktionierenden Benachrichtigungen verwendet. Ich habe eine Hello World-Benachrichtigung getestet und es funktioniert ohne 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 aus http://www.devdungeon.com/content/desktop-notifications-python-libnotify

Ich bin mir nicht sicher, warum das funktioniert. Das python Notify umschließt nur die im C-Beispiel verwendete Bibliothek. Ich würde es vorziehen, nicht python zu verwenden, werde es aber tun, wenn ich muss.

Bearbeiten

Das Problem trat erneut auf. Behebung durch Hinzufügen von Dringlichkeit kritisch.

2
aco

Ein Neustart behebt das Problem. Nicht sicher warum.

Bearbeiten Das Problem ist erneut aufgetreten. Bei Verwendung von Dringlichkeit kritisch wurde die Benachrichtigung angezeigt. Der Befehl lautet:

 notify-send --urgency="critical" "asdf"
1
aco

Mit diese Antwort habe ich das Problem "behoben". Jetzt wird kein Sudo benötigt. Muss neu eingestellt werden DBUS_SESSION_BUS_ADDRESS Umgebungsvariable:

eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";

Aber als hier gefragt :

  • notify-send -u critical "Nice title" "Nice description" funktioniert aber gut
  • notify-send -u normal "Nice title" "Nice description" funktioniert nicht.

Auch mit -i Dieser Weg scheint veraltet zu sein: notify-send -i "notification-network-wireless-full" "Summary" "Body". Vielleicht sollten wir einen Fehler melden .

0
Pablo Bianchi