Можно ли отменить или удалить уведомление, созданное с помощью notify-send?

Поэтому я написал небольшой скрипт, который гарантирует, что определенный пользователь подключается к ноутбуку при входе в систему (он отключается, если он этого не делает). Сценарий использует команду notify-send, чтобы сказать ему, чтобы он подключился. Если он подключит его, сценарий закроется. Можно ли автоматически удалить уведомление, когда он его подключит? Я думаю, что может потребоваться каким-то образом получить идентификатор процесса путем уведомления-отправки и уничтожения этого PID, но я не знаю, как это сделать.

Вот текущий скрипт:

#!/bin/bash 

cat /sys/class/power_supply/BAT0/status
OUTPUT="$(cat /sys/class/power_supply/BAT0/status)"
echo "${OUTPUT}"
if [ "${OUTPUT}" = "Charging" ] || [ "${OUTPUT}" = "Unknown" ]; then
    echo charging or full
elif [ "${OUTPUT}" = "Discharging" ]; then
    notify-send -i /home/evamvid/Documents/Programming/OokiNoUse/power25.png "Hey there brother" "plug it in"
    COUNTER=0
while [ "$COUNTER" -le 12 ]
do
    cat /sys/class/power_supply/BAT0/status
    OUTPUT="$(cat /sys/class/power_supply/BAT0/status)"
    echo "${OUTPUT}"
    if [ "${OUTPUT}" = "Charging" ] || [ "${OUTPUT}" = "Unknown" ]; then
        exit
    elif [ "${OUTPUT}" = "Discharging" ]; then
        COUNTER=$(($COUNTER+1))
        echo $COUNTER
        sleep 1
    fi
done
fi

1 ответ

Решение

Процесс, который вы ищете notify-osd, Вы можете убить его любой командой:

pkill notify-osd

или его pid:

kill $(ps -e | grep notify-osd | awk '{ print $1 }')

или, что еще лучше, как подсказывает @kos (спасибо!), используя pgrep:

kill $(pgrep ^notify-osd$)

Или же, если вы вообще не хотите, чтобы уведомление отображалось в истории уведомлений, вы можете попробовать:

notify-send --hint int:transient:1 "Title" "Body"

Я использую Mint MATE 17 Процесс указан (пример) 15107? Sl 0:00 /usr/lib/mate-tification-daemon/mate-tification-daemon

Я пробовал pkill как$ pkill mate-notification-daemonи даже$ pkill mate-notificationИ не сработало. Однако, если я обрезал слово "уведомление", это сработало: $ pkill mate-notificati Добавление "в" к слову заставляет его не работать. Не знаю почему. Я полагаю, что это относится и к версиям Ubuntu MATE.

Для рабочего стола xfce (Lubuntu 18.04) уведомление-отправка:

pkill xfce4-notifyd
Другие вопросы по тегам