Не вызывается обратный вызов действия libnotify

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

#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, гном 2.82.2. Другие приложения (например, Firefox "Загрузка завершена") могут создавать уведомления, которые выполняют действие при нажатии; Я просто как-то не правильно делаю.

1 ответ

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

Другие вопросы по тегам