From c45a9eac73f67620b44999d2ddd8ff23b4d844a4 Mon Sep 17 00:00:00 2001 From: mrossinek Date: Fri, 1 May 2020 19:13:13 +0200 Subject: [PATCH] Add toggle option to dunstctl set-running command Fixes #709 --- docs/dunstctl.pod | 2 +- dunstctl | 39 ++++++++++++++++++++++++--------------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/docs/dunstctl.pod b/docs/dunstctl.pod index c537349..dba127f 100644 --- a/docs/dunstctl.pod +++ b/docs/dunstctl.pod @@ -40,7 +40,7 @@ in dunst. 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 diff --git a/dunstctl b/dunstctl index 347c77c..3218894 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 + running Check if dunst is running or paused + set-running [true|false|toggle] Set the pause status + debug Print debugging information + help Show this help EOH } dbus_send_checked() { @@ -69,10 +69,19 @@ case "${1:-}" in ;; "set-running") [ "${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 running parameter." + [ "${2}" = "true" ] || [ "${2}" = "false" ] || [ "${2}" = "toggle" ] \ + || die "Please give either 'true', 'false' or 'toggle' as running parameter." + if [ "${2}" = "toggle" ]; then + paused=$(property_get running | ( read -r _ _ paused; printf "%s\n" "${paused}"; )) + if [ "${paused}" = "true" ]; then + property_set running variant:boolean:false + else + property_set running variant:boolean:true + fi + else + property_set running variant:boolean:"${2}" + fi ;; "help"|"--help"|"-h") show_help