Overhaul dunstctl
This commit is contained in:
parent
305ab6c4e6
commit
72d68fcec4
130
dunstctl
130
dunstctl
@ -1,89 +1,75 @@
|
|||||||
#!/bin/sh -eu
|
#!/bin/sh
|
||||||
|
|
||||||
dbus_name="org.freedesktop.Notifications"
|
set -eu
|
||||||
dbus_path="/org/freedesktop/Notifications"
|
|
||||||
dbus_ifac="org.dunstproject.cmd0"
|
|
||||||
dbus_property="org.freedesktop.DBus.Properties"
|
|
||||||
|
|
||||||
usage() {
|
DBUS_NAME="org.freedesktop.Notifications"
|
||||||
echo "Usage: dunstctl <command> [options...]"
|
DBUS_PATH="/org/freedesktop/Notifications"
|
||||||
echo ""
|
DBUS_IFAC_DUNST="org.dunstproject.cmd0"
|
||||||
echo "Commands:"
|
DBUS_IFAC_PROP="org.freedesktop.DBus.Properties"
|
||||||
echo " close [-a|--all] Close the last or all notifications"
|
DBUS_IFAC_FDN="org.freedesktop.Notifications"
|
||||||
echo " context Open context menu of latest notification"
|
|
||||||
echo " display Redisplay closed notifications"
|
function die(){ printf "%s\n" "${1}" >&2; exit 1; }
|
||||||
echo " status Reload the configuration file"
|
|
||||||
echo " help Show this help"
|
function show_help() {
|
||||||
|
cat <<-EOH
|
||||||
|
Usage: dunstctl <command> [parameters]"
|
||||||
|
Commands:
|
||||||
|
close Close the last notification
|
||||||
|
close-all Close the all notifications
|
||||||
|
context Open context menu of latest notification
|
||||||
|
history-pop Pop one notification from history
|
||||||
|
status Check if
|
||||||
|
status-set [true|false] Set the status
|
||||||
|
help Show this help
|
||||||
|
EOH
|
||||||
}
|
}
|
||||||
|
|
||||||
method_call() {
|
function method_call() {
|
||||||
dbus-send --print-reply=literal --dest=$dbus_name $dbus_path $dbus_ifac."$*"
|
dbus-send --print-reply=literal --dest="${DBUS_NAME}" "${DBUS_PATH}" "${1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
property_get() {
|
function property_get() {
|
||||||
result=$(dbus-send --print-reply=literal --dest=$dbus_name $dbus_path $dbus_property.Get string:$dbus_ifac string:"$*")
|
dbus-send --print-reply=literal --dest="${DBUS_NAME}" "${DBUS_PATH}" "${DBUS_IFAC_PROP}.Get" "string:${DBUS_IFAC_DUNST}" "string:${1}"
|
||||||
if test "${result#*'true'}" != "$result"; then
|
|
||||||
echo "dunst notifications are enabled"
|
|
||||||
else
|
|
||||||
echo "dunst notifications are disabled"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
property_set() {
|
function property_set() {
|
||||||
dbus-send --print-reply=literal --dest=$dbus_name $dbus_path $dbus_property.Set string:$dbus_ifac string:"$@"
|
dbus-send --print-reply=literal --dest="${DBUS_NAME}" "${DBUS_PATH}" "${DBUS_IFAC_PROP}.Set" "string:${DBUS_IFAC_DUNST}" "string:${1}" "${2}"
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ $# -eq 0 ] || [ $# -gt 3 ]; then
|
command -v dbus-send >/dev/null 2>/dev/null || \
|
||||||
usage
|
die "Command dbus-send not found"
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
"close")
|
case "${1:-}" in
|
||||||
[ $# -lt 2 ] && param="" || param="$2"
|
"close")
|
||||||
case "$param" in
|
method_call "${DBUS_IFAC_DUNST}.NotificationCloseLast" >/dev/null
|
||||||
"-a"|"--all")
|
;;
|
||||||
method_call NotificationCloseAll
|
"close-all")
|
||||||
|
method_call "${DBUS_IFAC_DUNST}.NotificationCloseAll" >/dev/null
|
||||||
|
;;
|
||||||
|
"context")
|
||||||
|
method_call "${DBUS_IFAC_DUNST}.ContextMenuCall" >/dev/null
|
||||||
|
;;
|
||||||
|
"history-pop")
|
||||||
|
method_call "${DBUS_IFAC_DUNST}.NotificationShow" >/dev/null
|
||||||
|
;;
|
||||||
|
"status")
|
||||||
|
property_get running | ( read _ _ status; printf "%s\n" "${status}"; )
|
||||||
|
;;
|
||||||
|
"status-set")
|
||||||
|
[ "${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}"
|
||||||
|
;;
|
||||||
|
"help"|"--help"|"-h")
|
||||||
|
show_help
|
||||||
;;
|
;;
|
||||||
"")
|
"")
|
||||||
method_call NotificationCloseLast
|
die "dunstctl: No command specified. Please consult the usage."
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "dunstctl: unrecognized option '$2'"
|
die "dunstctl: unrecognized command '${1:-}'. Please consult the usage."
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
"context")
|
|
||||||
method_call ContextMenuCall
|
|
||||||
;;
|
|
||||||
"display")
|
|
||||||
method_call NotificationShow
|
|
||||||
;;
|
|
||||||
"status")
|
|
||||||
[ $# -lt 2 ] && action="" || action="$2"
|
|
||||||
case "$action" in
|
|
||||||
"disable")
|
|
||||||
property_set running variant:boolean:false
|
|
||||||
;;
|
|
||||||
"enable")
|
|
||||||
property_set running variant:boolean:true
|
|
||||||
;;
|
|
||||||
""|"get")
|
|
||||||
property_get running
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "dunstctl status: unrecognized option '$2'"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
"help"|"--help"|"-h")
|
|
||||||
usage
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "dunstctl: unrecognized command '$1'"
|
|
||||||
exit 1
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user