Merge pull request #793 from ritze/get-number-of-notifications

Get the number of notifications
This commit is contained in:
Nikos Tsipinakis 2020-12-28 13:49:32 +02:00 committed by GitHub
commit 167d7dd7c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 11 deletions

View File

@ -29,6 +29,11 @@ Close all notifications currently being displayed
Open the context menu, presenting all available actions and urls for the
currently open notifications.
=item B<count> [displayed/history/waiting]
Returns the number of displayed, shown and waiting notifications. If no argument
is provided, everything will be printed.
=item B<history-pop>
Redisplay the notification that was most recently closed. This can be called

View File

@ -20,6 +20,7 @@ show_help() {
close Close the last notification
close-all Close the all notifications
context Open context menu
count [displayed|history|waiting] Show the number of notifications
history-pop Pop one notification from history
is-paused Check if dunst is running or paused
set-paused [true|false|toggle] Set the pause status
@ -61,6 +62,17 @@ case "${1:-}" in
"context")
method_call "${DBUS_IFAC_DUNST}.ContextMenuCall" >/dev/null
;;
"count")
[ $# -eq 1 ] || [ "${2}" = "displayed" ] || [ "${2}" = "history" ] || [ "${2}" = "waiting" ] \
|| die "Please give either 'displayed', 'history', 'waiting' or none as count parameter."
if [ $# -eq 1 ]; then
property_get waitingLength | ( read -r _ _ waiting; printf " Waiting: %s\n" "${waiting}" )
property_get displayedLength | ( read -r _ _ displayed; printf " Currently displayed: %s\n" "${displayed}" )
property_get historyLength | ( read -r _ _ history; printf " History: %s\n" "${history}")
else
property_get ${2}Length | ( read -r _ _ notifications; printf "%s\n" "${notifications}"; )
fi
;;
"history-pop")
method_call "${DBUS_IFAC_DUNST}.NotificationShow" >/dev/null
;;

View File

@ -85,6 +85,10 @@ static const char *introspection_xml =
" <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>"
" </property>"
" <property name=\"displayedLength\" type=\"u\" access=\"read\" />"
" <property name=\"historyLength\" type=\"u\" access=\"read\" />"
" <property name=\"waitingLength\" type=\"u\" access=\"read\" />"
" </interface>"
"</node>";
@ -597,6 +601,15 @@ GVariant *dbus_cb_dunst_Properties_Get(GDBusConnection *connection,
if (STR_EQ(property_name, "paused")) {
return g_variant_new_boolean(!status.running);
} else if (STR_EQ(property_name, "displayedLength")) {
unsigned int displayed = queues_length_displayed();
return g_variant_new_uint32(displayed);
} else if (STR_EQ(property_name, "historyLength")) {
unsigned int history = queues_length_history();
return g_variant_new_uint32(history);
} else if (STR_EQ(property_name, "waitingLength")) {
unsigned int waiting = queues_length_waiting();
return g_variant_new_uint32(waiting);
} else {
LOG_W("Unknown property!\n");
*error = g_error_new(G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_PROPERTY, "Unknown property");