notify-send: Support passing any hint value, by parsing variant strings

This commit is contained in:
Marco Trevisan (Treviño) 2022-04-27 20:45:06 +02:00
parent d6f4734adf
commit 02f2f91c3d
2 changed files with 11 additions and 2 deletions

View File

@ -101,7 +101,7 @@
<varlistentry> <varlistentry>
<term><option>-h</option>, <option>--hint</option>=<replaceable>TYPE</replaceable>:<replaceable>NAME</replaceable>:<replaceable>VALUE</replaceable> </term> <term><option>-h</option>, <option>--hint</option>=<replaceable>TYPE</replaceable>:<replaceable>NAME</replaceable>:<replaceable>VALUE</replaceable> </term>
<listitem> <listitem>
<para>Specifies basic extra data to pass. Valid types are <literal>BOOLEAN</literal>, <literal>INT</literal>, <literal>DOUBLE</literal>, <literal>STRING</literal> and <literal>BYTE</literal>.</para> <para>Specifies basic extra data to pass. Valid types are <literal>BOOLEAN</literal>, <literal>INT</literal>, <literal>DOUBLE</literal>, <literal>STRING</literal>, <literal>BYTE</literal> and <literal>VARIANT</literal>.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>

View File

@ -111,6 +111,15 @@ notify_notification_set_hint_variant (NotifyNotification *notification,
notify_notification_set_hint (notification, key, notify_notification_set_hint (notification, key,
g_variant_new_boolean (h_boolean)); g_variant_new_boolean (h_boolean));
} else if (g_ascii_strcasecmp (type, "variant") == 0) {
GVariant *variant = g_variant_parse (NULL, value, NULL, NULL, NULL);
if (variant != NULL) {
notify_notification_set_hint (notification, key, variant);
} else {
conv_error = TRUE;
}
} else { } else {
*error = g_error_new (G_OPTION_ERROR, *error = g_error_new (G_OPTION_ERROR,
G_OPTION_ERROR_BAD_VALUE, G_OPTION_ERROR_BAD_VALUE,
@ -208,7 +217,7 @@ main (int argc, char *argv[])
N_("TYPE[,TYPE...]")}, N_("TYPE[,TYPE...]")},
{"hint", 'h', 0, G_OPTION_ARG_FILENAME_ARRAY, &hints, {"hint", 'h', 0, G_OPTION_ARG_FILENAME_ARRAY, &hints,
N_ N_
("Specifies basic extra data to pass. Valid types are boolean, int, double, string and byte."), ("Specifies basic extra data to pass. Valid types are boolean, int, double, string, byte and variant."),
N_("TYPE:NAME:VALUE")}, N_("TYPE:NAME:VALUE")},
{"print-id", 'p', 0, G_OPTION_ARG_NONE, &print_id, {"print-id", 'p', 0, G_OPTION_ARG_NONE, &print_id,
N_ ("Print the notification ID."), NULL}, N_ ("Print the notification ID."), NULL},