Проблема
sudo notify-send Test "Hello World"
Отображает уведомление как ожидаемое.
notify-send Test "Hello World"
Не отображает уведомление.
Проблема [!d1 ]
Версия Ubuntu 16.04.
В уведомлениях используется notify-osd вместо уведомления-демона. При запуске уведомления-отправки запускается процесс notify-osd под пользователем, который запускал notify-send. Я не уверен, что такое dbus.
Нет сообщений об ошибках
В syslog нет ошибок. Когда я запускаю следующий код, ошибок не возникает.
#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 с рабочими уведомлениями. Я проверил приветствие в мире, и он работает без 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, но будет, если я должен.
Изменить
Проблема повторилась. Решено, добавив критичность срочности.
С этим ответом я «исправил» проблему. Теперь нет 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" doesn Не работай.Также, используя -i, этот способ кажется устаревшим: notify-send -i "notification-network-wireless-full" "Summary" "Body". Может быть, мы должны указать ошибку.