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 Open the context menu, presenting all available actions and urls for the
currently open notifications. 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> =item B<history-pop>
Redisplay the notification that was most recently closed. This can be called 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 Close the last notification
close-all Close the all notifications close-all Close the all notifications
context Open context menu context Open context menu
count [displayed|history|waiting] Show the number of notifications
history-pop Pop one notification from history history-pop Pop one notification from history
is-paused Check if dunst is running or paused is-paused Check if dunst is running or paused
set-paused [true|false|toggle] Set the pause status set-paused [true|false|toggle] Set the pause status
@ -61,6 +62,17 @@ case "${1:-}" in
"context") "context")
method_call "${DBUS_IFAC_DUNST}.ContextMenuCall" >/dev/null 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") "history-pop")
method_call "${DBUS_IFAC_DUNST}.NotificationShow" >/dev/null 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\"/>" " <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>"
" </property>" " </property>"
" <property name=\"displayedLength\" type=\"u\" access=\"read\" />"
" <property name=\"historyLength\" type=\"u\" access=\"read\" />"
" <property name=\"waitingLength\" type=\"u\" access=\"read\" />"
" </interface>" " </interface>"
"</node>"; "</node>";
@ -597,6 +601,15 @@ GVariant *dbus_cb_dunst_Properties_Get(GDBusConnection *connection,
if (STR_EQ(property_name, "paused")) { if (STR_EQ(property_name, "paused")) {
return g_variant_new_boolean(!status.running); 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 { } else {
LOG_W("Unknown property!\n"); LOG_W("Unknown property!\n");
*error = g_error_new(G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_PROPERTY, "Unknown property"); *error = g_error_new(G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_PROPERTY, "Unknown property");