通知发送仅适用于 sudo

通知发送仅适用于 sudo

问题

sudo notify-send Test "Hello World"

按预期显示通知。

notify-send Test "Hello World"

不显示通知。

更多信息

Ubuntu 版本 16.04。

通知似乎使用notify-osd而不是notification-daemon。运行notify-send似乎会在运行notify-send的用户下启动一个notify-osd进程。我不确定dbus是什么。

没有错误消息

系统日志中没有错误。当我运行以下代码时,没有出现任何错误消息。

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

我不知道我在做什么。谢谢你的帮助。

Python 通知

过去,我使用过一个具有有效通知功能的 Python 程序。我测试了一个 hello world 通知,它无需 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()

代码来自http://www.devdungeon.com/content/desktop-notifications-python-libnotify

我不确定为什么这样做有效。python Notify 只是包装了 C 示例中使用的库。我宁愿不使用 python,但如果必须的话,我会使用。

编辑

问题再次出现。已通过添加紧急程度严重来解决。

答案1

重新启动解决了问题。不知道原因。

编辑 问题再次出现。使用紧急严重导致通知出现。命令是:

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

答案2

这个答案我“修复”了这个问题。sudo现在不需要了。必须再次设置DBUS_SESSION_BUS_ADDRESS环境变量:

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

但,正如在这里问

  • notify-send -u critical "Nice title" "Nice description"工作正常,但是
  • notify-send -u normal "Nice title" "Nice description"不起作用。

-i这种方式似乎也不推荐使用: notify-send -i "notification-network-wireless-full" "Summary" "Body"。也许我们应该提交错误

相关内容