diff --git a/docs/dunst.pod b/docs/dunst.pod index b97e647..0c55472 100644 --- a/docs/dunst.pod +++ b/docs/dunst.pod @@ -872,8 +872,8 @@ Example time: "1000ms" "10m" =head1 MISCELLANEOUS -Dunst can be paused via the `dunstctl set-running false` command. To unpause dunst use -`dunstctl set-status true` and to unpause `dunstctl set-status false`. +Dunst can be paused via the `dunstctl set-paused true` command. To unpause dunst use +`dunstctl set-paused false`. Alternatively you can send SIGUSR1 and SIGUSR2 to pause and unpause respectively. For Example: diff --git a/docs/dunstctl.pod b/docs/dunstctl.pod index c537349..2a637fb 100644 --- a/docs/dunstctl.pod +++ b/docs/dunstctl.pod @@ -35,15 +35,15 @@ Redisplay the notification that was most recently closed. This can be called multiple times to show older notifications, up to the history limit configured in dunst. -=item B +=item B Check if dunst is currently running or paused. If dunst is paused notifications will be kept but not shown until it is unpaused. -=item B true/false +=item B true/false/toggle -Set the paused status of dunst. If true, dunst is running normally, if false, -dunst is paused. See the running command and the dunst man page for more +Set the paused status of dunst. If false, dunst is running normally, if true, +dunst is paused. See the is-paused command and the dunst man page for more information. =item B diff --git a/dunstctl b/dunstctl index 347c77c..78419b7 100755 --- a/dunstctl +++ b/dunstctl @@ -14,17 +14,17 @@ show_help() { cat <<-EOH Usage: dunstctl [parameters]" Commands: - action Perform the default action, or open the - context menu of the notification at the - given position - close Close the last notification - close-all Close the all notifications - context Open context menu - history-pop Pop one notification from history - running Check if dunst is running or paused - set-running [true|false] Set the pause status - debug Print debugging information - help Show this help + action Perform the default action, or open the + context menu of the notification at the + given position + close Close the last notification + close-all Close the all notifications + context Open context menu + 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 + debug Print debugging information + help Show this help EOH } dbus_send_checked() { @@ -64,15 +64,24 @@ case "${1:-}" in "history-pop") method_call "${DBUS_IFAC_DUNST}.NotificationShow" >/dev/null ;; - "running") - property_get running | ( read -r _ _ paused; printf "%s\n" "${paused}"; ) + "is-paused") + property_get paused | ( read -r _ _ paused; printf "%s\n" "${paused}"; ) ;; - "set-running") + "set-paused") [ "${2:-}" ] \ - || die "No status parameter specified. Please give either 'true' or 'false' as running parameter." - [ "${2}" = "true" ] || [ "${2}" = "false" ] \ - || die "Please give either 'true' or 'false' as running parameter." - property_set running variant:boolean:"${2}" + || die "No status parameter specified. Please give either 'true', 'false' or 'toggle' as paused parameter." + [ "${2}" = "true" ] || [ "${2}" = "false" ] || [ "${2}" = "toggle" ] \ + || die "Please give either 'true', 'false' or 'toggle' as paused parameter." + if [ "${2}" = "toggle" ]; then + paused=$(property_get paused | ( read -r _ _ paused; printf "%s\n" "${paused}"; )) + if [ "${paused}" = "true" ]; then + property_set paused variant:boolean:false + else + property_set paused variant:boolean:true + fi + else + property_set paused variant:boolean:"$2" + fi ;; "help"|"--help"|"-h") show_help diff --git a/src/dbus.c b/src/dbus.c index e3427b8..eb63f69 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -81,7 +81,7 @@ static const char *introspection_xml = " " " " - " " + " " " " " " @@ -588,8 +588,8 @@ GVariant *dbus_cb_dunst_Properties_Get(GDBusConnection *connection, { struct dunst_status status = dunst_status_get(); - if (STR_EQ(property_name, "running")) { - return g_variant_new_boolean(status.running); + if (STR_EQ(property_name, "paused")) { + return g_variant_new_boolean(!status.running); } else { LOG_W("Unknown property!\n"); *error = g_error_new(G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_PROPERTY, "Unknown property"); @@ -606,8 +606,8 @@ gboolean dbus_cb_dunst_Properties_Set(GDBusConnection *connection, GError **error, gpointer user_data) { - if (STR_EQ(property_name, "running")) { - dunst_status(S_RUNNING, g_variant_get_boolean(value)); + if (STR_EQ(property_name, "paused")) { + dunst_status(S_RUNNING, !g_variant_get_boolean(value)); wake_up(); return true; }