Как очистить только одно уведомление с помощью Notify и python? - PullRequest
0 голосов
/ 16 мая 2018

Я написал небольшой скрипт на 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 с новым именем программы, чтобы попытаться получить сообщения из другого источника, но сообщения по-прежнему удаляются одновременно независимо от того, на какой я нажимаю.

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

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

1 Ответ

0 голосов
/ 17 мая 2018

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

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

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

...