From 92d6926648118a08322d1be3a65084264e0ce2cc Mon Sep 17 00:00:00 2001 From: flowbreeze <1071147233@qq.com> Date: Thu, 27 Apr 2023 13:48:51 +0800 Subject: [PATCH] check notification service before enable --- auto-notify.plugin.zsh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/auto-notify.plugin.zsh b/auto-notify.plugin.zsh index b908913..1dc849f 100644 --- a/auto-notify.plugin.zsh +++ b/auto-notify.plugin.zsh @@ -146,6 +146,25 @@ function _auto_notify_reset_tracking() { unset AUTO_COMMAND } +function _has_notification_service() { + # Check dbus-send command exists + if ! type dbus-send > /dev/null; then + # perhaps it should run notify-send + print "unknown" + return + fi + local interfaces="$(dbus-send --session \ + --type=method_call \ + --print-reply \ + --dest=org.freedesktop.DBus \ + /org/freedesktop/DBus org.freedesktop.DBus.ListNames)" + if [[ $interfaces == *"org.freedesktop.Notifications"* ]]; then + print "yes" + else + print "no" + fi +} + function disable_auto_notify() { add-zsh-hook -D preexec _auto_notify_track add-zsh-hook -D precmd _auto_notify_send @@ -164,6 +183,8 @@ platform="$(uname)" if [[ "$platform" == "Linux" ]] && ! type notify-send > /dev/null; then printf "'notify-send' must be installed for zsh-auto-notify to work\n" printf "Please install it with your relevant package manager\n" +elif [[ "$platform" == "Linux" ]] && [[ "$(_has_notification_service)" == "no" ]]; then + # do not enable else enable_auto_notify fi