Merge pull request #711 from mrossinek/dunstctl-toggle-pause
Allow toggling pause state via dunstctl
This commit is contained in:
commit
fb2ffd425e
@ -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:
|
||||
|
||||
|
@ -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<running>
|
||||
=item B<is-paused>
|
||||
|
||||
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<set-running> true/false
|
||||
=item B<set-paused> 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<debug>
|
||||
|
45
dunstctl
45
dunstctl
@ -14,17 +14,17 @@ show_help() {
|
||||
cat <<-EOH
|
||||
Usage: dunstctl <command> [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
|
||||
|
10
src/dbus.c
10
src/dbus.c
@ -81,7 +81,7 @@ static const char *introspection_xml =
|
||||
" <method name=\"NotificationShow\" />"
|
||||
" <method name=\"Ping\" />"
|
||||
|
||||
" <property name=\"running\" type=\"b\" access=\"readwrite\">"
|
||||
" <property name=\"paused\" type=\"b\" access=\"readwrite\">"
|
||||
" <annotation name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\" value=\"true\"/>"
|
||||
" </property>"
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user