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 dba127f..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/toggle +=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 3218894..a8bc1fa 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|toggle] 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() { @@ -44,6 +44,14 @@ property_set() { dbus_send_checked --print-reply=literal --dest="${DBUS_NAME}" "${DBUS_PATH}" "${DBUS_IFAC_PROP}.Set" "string:${DBUS_IFAC_DUNST}" "string:${1}" "${2}" } +invert_boolean() { + if [ "${1}" = "true" ]; then + printf "%s\n" "false" + elif [ "${1}" = "false" ]; then + printf "%s\n" "true" + fi +} + command -v dbus-send >/dev/null 2>/dev/null || \ die "Command dbus-send not found" @@ -64,23 +72,28 @@ 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") + running=$(property_get running | ( read -r _ _ running; printf "%s\n" "${running}"; )) + # invert boolean to indiciate pause status rather than running one + paused=$(invert_boolean "${running}") + printf "%s\n" "${paused}" ;; - "set-running") + "set-paused") [ "${2:-}" ] \ - || die "No status parameter specified. Please give either 'true', 'false' or 'toggle' as running parameter." + || 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 running parameter." + || die "Please give either 'true', 'false' or 'toggle' as paused parameter." if [ "${2}" = "toggle" ]; then - paused=$(property_get running | ( read -r _ _ paused; printf "%s\n" "${paused}"; )) - if [ "${paused}" = "true" ]; then + running=$(property_get running | ( read -r _ _ running; printf "%s\n" "${running}"; )) + if [ "${running}" = "true" ]; then property_set running variant:boolean:false else property_set running variant:boolean:true fi else - property_set running variant:boolean:"${2}" + # invert boolean to indiciate running status rather than pause one + running=$(invert_boolean "${2}") + property_set running variant:boolean:"${running}" fi ;; "help"|"--help"|"-h")