notify-send: Support for replacing an existing notification
Support printing and overriding notification ID, so that it's possible to replace a notification that is currently showing with an updated content. Based on patch as provided by Paul Collins in the following bug report: https://bugs.launchpad.net/ubuntu/+source/libnotify/+bug/257135/comments/8 Co-authored-by: Marco Trevisan (Treviño) <mail@3v1n0.net> Fixes #19
This commit is contained in:
parent
f9c1cf1b71
commit
652b4d6911
|
@ -130,6 +130,8 @@ main (int argc, char *argv[])
|
||||||
static char *icon_str = NULL;
|
static char *icon_str = NULL;
|
||||||
static char **n_text = NULL;
|
static char **n_text = NULL;
|
||||||
static char **hints = NULL;
|
static char **hints = NULL;
|
||||||
|
static gboolean print_id = FALSE;
|
||||||
|
static gint notification_id = 0;
|
||||||
static gboolean do_version = FALSE;
|
static gboolean do_version = FALSE;
|
||||||
static gboolean hint_error = FALSE, show_error = FALSE;
|
static gboolean hint_error = FALSE, show_error = FALSE;
|
||||||
static glong expire_timeout = NOTIFY_EXPIRES_DEFAULT;
|
static glong expire_timeout = NOTIFY_EXPIRES_DEFAULT;
|
||||||
|
@ -159,6 +161,10 @@ main (int argc, char *argv[])
|
||||||
N_
|
N_
|
||||||
("Specifies basic extra data to pass. Valid types are int, double, string and byte."),
|
("Specifies basic extra data to pass. Valid types are int, double, string and byte."),
|
||||||
N_("TYPE:NAME:VALUE")},
|
N_("TYPE:NAME:VALUE")},
|
||||||
|
{"print-id", 'p', 0, G_OPTION_ARG_NONE, &print_id,
|
||||||
|
N_ ("Print the notification ID."), NULL},
|
||||||
|
{"replace-id", 'r', 0, G_OPTION_ARG_INT, ¬ification_id,
|
||||||
|
N_ ("The ID of the notification to replace."), N_("REPLACE_ID")},
|
||||||
{"version", 'v', 0, G_OPTION_ARG_NONE, &do_version,
|
{"version", 'v', 0, G_OPTION_ARG_NONE, &do_version,
|
||||||
N_("Version of the package."),
|
N_("Version of the package."),
|
||||||
NULL},
|
NULL},
|
||||||
|
@ -217,9 +223,13 @@ main (int argc, char *argv[])
|
||||||
if (!notify_init ("notify-send"))
|
if (!notify_init ("notify-send"))
|
||||||
exit (1);
|
exit (1);
|
||||||
|
|
||||||
notify = notify_notification_new (summary,
|
notify = g_object_new (NOTIFY_TYPE_NOTIFICATION,
|
||||||
body,
|
"summary", summary,
|
||||||
icon_str);
|
"body", body,
|
||||||
|
"icon-name", icon_str,
|
||||||
|
"id", notification_id,
|
||||||
|
NULL);
|
||||||
|
|
||||||
notify_notification_set_category (notify, type);
|
notify_notification_set_category (notify, type);
|
||||||
notify_notification_set_urgency (notify, urgency);
|
notify_notification_set_urgency (notify, urgency);
|
||||||
notify_notification_set_timeout (notify, expire_timeout);
|
notify_notification_set_timeout (notify, expire_timeout);
|
||||||
|
@ -273,6 +283,11 @@ main (int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (print_id) {
|
||||||
|
g_object_get (notify, "id", ¬ification_id, NULL);
|
||||||
|
g_printf ("%d\n", notification_id);
|
||||||
|
}
|
||||||
|
|
||||||
g_object_unref (G_OBJECT (notify));
|
g_object_unref (G_OBJECT (notify));
|
||||||
|
|
||||||
notify_uninit ();
|
notify_uninit ();
|
||||||
|
|
Loading…
Reference in New Issue