問題
Sudo notify-send Test "Hello World"
期待どおりに通知を表示します。
notify-send Test "Hello World"
通知を表示しません。
詳細情報
Ubuntuバージョン16.04。
通知は、notification-daemonではなくnotify-osdを使用するように見えます。 notify-sendを実行すると、notify-sendを実行したユーザーの下でnotify-osdプロセスが起動されます。 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 Notify
過去には、通知が機能する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通知は、Cの例で使用されているライブラリをラップしているだけです。 pythonは使用したくないのですが、必要な場合は使用します。
編集
問題が再び発生しました。緊急度の高いクリティカルを追加して解決しました。
再起動すると問題が修正されました。理由はわかりません。
編集問題が再び発生しました。緊急の緊急度を使用すると、通知が表示されました。コマンドは次のとおりです。
notify-send --urgency="critical" "asdf"
この答え で問題を「修正」しました。 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"
。たぶん バグを報告する です。