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

@ -14,17 +14,18 @@ show_help() {
cat <<-EOH cat <<-EOH
Usage: dunstctl <command> [parameters]" Usage: dunstctl <command> [parameters]"
Commands: Commands:
action Perform the default action, or open the action Perform the default action, or open the
context menu of the notification at the context menu of the notification at the
given position given position
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
history-pop Pop one notification from history count [displayed|history|waiting] Show the number of notifications
is-paused Check if dunst is running or paused history-pop Pop one notification from history
set-paused [true|false|toggle] Set the pause status is-paused Check if dunst is running or paused
debug Print debugging information set-paused [true|false|toggle] Set the pause status
help Show this help debug Print debugging information
help Show this help
EOH EOH
} }
dbus_send_checked() { dbus_send_checked() {
@ -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");