2013-06-20 5 views
2

Я пытаюсь создать простое уведомление в gnome, которое будет выполнять некоторый код при нажатии. Код, который у меня ниже, компилируется и запускается, но нажатие на пузырь уведомления ничего не делает. Все образцы кода, которые я нашел, показывают, что это должно сработать.libnotify call callback не называется

#include <stdlib.h> 
#include <stdio.h> 

#include <libnotify/notify.h> 

void action(NotifyNotification *n, gchar *action, gpointer data) { 
    system("gnome-terminal &"); 
} 

int main(int argc, char **argv) { 

    gtk_init(&argc, &argv); 

    notify_init("MyApp"); 

    NotifyNotification *notification; 
    notification = notify_notification_new("mynotification", "Hello", NULL, NULL); 

    notify_notification_add_action(notification, "DoAction", "default", 
      (NotifyActionCallback)action, NULL, NULL); 

    notify_notification_show(notification, NULL); 

    pause(); 

} 

Для компиляции:

gcc main.c `pkg-config --cflags --libs libnotify` 

Я на RHEL 6.4, Gnome 2.82.2. Другие приложения (например, firefox «Загрузки завершены») могут создавать уведомления, которые выполняют действие при нажатии; Я просто так не делаю этого.

ответ

2

Был такой же вопрос. Очевидно, вам придется использовать цикл GTK путем вызова gtk_main или одной из эквивалентных функций вместо использования функций паузы/сна или других функций блокировки без gtk.