Как очистить только одно уведомление с помощью Notify и python?

У меня есть небольшой скрипт на Python, который использует уведомления для предупреждения пользователя, когда что-то происходит. Сценарий запускается в среде рабочего стола на основе корицы или гнома.

Суть сценария в следующем:

from gi.repository import Notify

Notify.init("My Program Name")
notification = Notify.Notification.new("Hi")
notification.show()
Notify.uninit()

Notify.init("My New Program Name")
notification = Notify.Notification.new("Hi")
notification.show()
Notify.uninit()

from subprocess import call
call(['notify-send', 'hello', 'world'])
call(['notify-send', 'hello', 'again'])

Как вы можете видеть, скрипт использует Notify для отправки первых двух сообщений и вызов подпроцесса для отправки последних двух сообщений.

Что произойдет, когда вы запустите это, вы получите 4 сообщения в виде уведомлений.

Если я нажимаю на одно из сообщений "Уведомить", они оба сразу удаляются.

Если я нажимаю на любой из "вызовов подпроцесса", они удаляются отдельно в зависимости от того, на какой из них я нажимаю. Это поведение, которое я хотел бы для сообщений "Уведомить".

Как вы можете видеть из кода, который я предоставил, я попытался повторно инициировать Notify с новым именем программы, чтобы попытаться получить сообщения из другого источника, но сообщения по-прежнему удаляются одновременно, независимо от того, какие один я нажимаю.

Как получить только одно сообщение, которое будет удалено за один раз при использовании уведомления?

(Я не могу просто использовать вызовы подпроцесса, поскольку я также хочу добавить действие к уведомлению, которое, я не думаю, возможно с уведомлением-отправкой.)

1 ответ

Решение

Я решил это, добавив:

notification.set_hint('resident', GLib.Variant.new_boolean(True))

Это устанавливает уведомление, которое будет очищено только при нажатии на уведомление.

Другие вопросы по тегам