web-dev-qa-db-ja.com

notify-sendはsudoでのみ機能します

問題

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は使用したくないのですが、必要な場合は使用します。

編集

問題が再び発生しました。緊急度の高いクリティカルを追加して解決しました。

2
aco

再起動すると問題が修正されました。理由はわかりません。

編集問題が再び発生しました。緊急の緊急度を使用すると、通知が表示されました。コマンドは次のとおりです。

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

この答え で問題を「修正」しました。 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"。たぶん バグを報告する です。

0
Pablo Bianchi