Отображение уведомлений в установках на основе Ubuntu

Я пытаюсь написать простой скрипт на python для ОС на основе Ubuntu. В рамках сценария также отображается уведомление. Теперь я прочитал несколько постов здесь, но с каждым из них у меня есть сопутствующий вопрос (и некоторая проблема). Ниже приведены различные способы, которые я уже пробовал (и связанные с этим проблемы),

Использование notify2

Это в значительной степени сработало хорошо. Тем не менее, со следующей проблемой,

а. По какой-то причине значок не отображается в окне уведомлений, и нет ошибки. Простое печатное заявление,print(os.path.abspath('icon.svg'), возвращая путь, возвращает правильный путь, но изображение по-прежнему отсутствует.

Вот точный код, который я использую,

def show_notification(title, content):
    notify2.init(title)
    n = notify2.Notification(title, content, os.path.abspath('icon.svg'))
    n.show()

Использование из gi.repository import Notify

После файла привет-единства здесь. Я пытался использовать Notify. Я не смог запустить это вообще! В последний раз, когда я пытался, я получил ошибку ImportError: cannot import name Notify запустив скрипт как python test.py,

Выполнение того же с использованием Python3, как в python3 test.py приводит к другой ошибке ImportError: cannot import name Notify, introspection typelib not found,

Чтобы преодолеть это, я попытался установить python-gobject а также libnotify-bin но они уже установлены в моей системе (элементарная ОС Loki). Ошибки все еще сохраняются.

Использование подпроцесса

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

import subprocess as s
s.call(['notify-send','foo','bar'])

Основной вопрос

Поскольку я впервые пытаюсь разработать для сообщества Linux (точнее, Ubuntu), я довольно новичок в разработке для Linux. Попытка поиска простой (и правильной) реализации, такой как уведомление, была довольно трудоемкой и запутанной. Помимо предложения о правильном способе реализации уведомлений, я был бы признателен, если бы кто-то мог указать мне правильное направление, что-то вроде руководства разработчика Android, которое показывает или имеет ссылки API.

И прежде чем кто-нибудь спросит о моих предпочтениях в разработке, мне больше нравится Python. Что касается GUI, опять же я не уверен, какой путь выбрать, хотя GTK кажется более популярным.

1 ответ

Решение

Вызов уведомлений из приложений на Ubuntu

Определенно третий, используя либо subprocess.call() или же subprocess.Popen(), Отмечая импортировать но subprocess, Ничего нового для установки. Просто и легко, всегда работает отлично.

Несколько примеров:

  1. Просто текстовое уведомление:

    subprocess.Popen(["notify-send", "some text"])
    

  2. Название и текст:

    subprocess.Popen(["notify-send", "Title", "some text"])
    

  3. Значок, заголовок и текст:

    img = "/path/to/icon.png"
    subprocess.Popen(["notify-send", "-i", img, "Title", "some text"])
    

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