summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Collins <paul.collins@canonical.com>2012-05-22 13:26:08 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2022-04-25 19:42:13 +0200
commit652b4d6911e95adba15d3efddce08364a925877a (patch)
tree7b65d1a42ac04fecaef5c72f539af65744f82cdd
parentf9c1cf1b718e46f934bd4fdfb1d6ff62a0d063b6 (diff)
downloadlibnotify-652b4d6911e95adba15d3efddce08364a925877a.tar.gz
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
-rw-r--r--tools/notify-send.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/tools/notify-send.c b/tools/notify-send.c
index 15aa164..937fb41 100644
--- a/tools/notify-send.c
+++ b/tools/notify-send.c
@@ -130,6 +130,8 @@ main (int argc, char *argv[])
static char *icon_str = NULL;
static char **n_text = NULL;
static char **hints = NULL;
+ static gboolean print_id = FALSE;
+ static gint notification_id = 0;
static gboolean do_version = FALSE;
static gboolean hint_error = FALSE, show_error = FALSE;
static glong expire_timeout = NOTIFY_EXPIRES_DEFAULT;
@@ -159,6 +161,10 @@ main (int argc, char *argv[])
N_
("Specifies basic extra data to pass. Valid types are int, double, string and byte."),
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, &notification_id,
+ N_ ("The ID of the notification to replace."), N_("REPLACE_ID")},
{"version", 'v', 0, G_OPTION_ARG_NONE, &do_version,
N_("Version of the package."),
NULL},
@@ -217,9 +223,13 @@ main (int argc, char *argv[])
if (!notify_init ("notify-send"))
exit (1);
- notify = notify_notification_new (summary,
- body,
- icon_str);
+ notify = g_object_new (NOTIFY_TYPE_NOTIFICATION,
+ "summary", summary,
+ "body", body,
+ "icon-name", icon_str,
+ "id", notification_id,
+ NULL);
+
notify_notification_set_category (notify, type);
notify_notification_set_urgency (notify, urgency);
notify_notification_set_timeout (notify, expire_timeout);
@@ -273,6 +283,11 @@ main (int argc, char *argv[])
}
}
+ if (print_id) {
+ g_object_get (notify, "id", &notification_id, NULL);
+ g_printf ("%d\n", notification_id);
+ }
+
g_object_unref (G_OBJECT (notify));
notify_uninit ();