Mostrando notificações em instalações baseadas no Ubuntu

3

Eu estou (tentando) escrever um script python simples para o sistema operacional baseado no Ubuntu. Como parte do script, uma notificação também é mostrada. Agora, eu passei por um número de posts aqui, mas com cada um eu tenho uma pergunta de acompanhamento (e algum problema). A seguir estão maneiras diferentes, eu já tentei (e problema associado),

Usando o notify2

Isso funcionou muito bem. No entanto, com o seguinte problema,

a. Por algum motivo, o ícone não está sendo mostrado na bolha de notificação e não há erro. Uma instrução de impressão simples, print(os.path.abspath('icon.svg') , caminho de retorno, produz caminho correto, mas ainda sem imagem.

Aqui está o código exato que estou usando,

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

Usando a partir da importação do gi.repository Notify

Seguindo o arquivo hello-unity aqui . Eu tentei usar o Notify. Eu não consegui fazer isso funcionar! A última vez que tentei, recebi um erro ImportError: cannot import name Notify executando o script como python test.py .

Executar o mesmo usando python3 como em python3 test.py resulta em um erro diferente ImportError: cannot import name Notify, introspection typelib not found .

Para superar isso, tentei instalar python-gobject e libnotify-bin , mas eles já estão instalados no meu sistema (Elementary OS Loki). Os erros ainda persistem.

Usando o subprocesso

Isso funcionou sem nenhum problema, mas não tenho certeza se essa é a melhor maneira de mostrar notificações, pois pretendo mostrar notificações regulares. Este é o código que usei,

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

Questão Principal

Como esta é a primeira vez que estou tentando desenvolver para a comunidade linux (ou melhor, o Ubuntu), sou relativamente novo no desenvolvimento do Linux. Tentar pesquisar por uma implementação simples (e correta), como a de notificação, tem sido demorada e confusa. Além de sugerir o jeito certo de implementar as notificações, eu apreciaria se alguém pudesse me apontar na direção certa, algo como o guia do desenvolvedor android que mostra ou tem referências de API.

E antes que alguém pergunte sobre minhas preferências de desenvolvimento, estou mais confortável com o python. Em relação à GUI, mais uma vez não tenho certeza de qual caminho seguir, embora o GTK pareça ser mais popular.

    
por Paritosh 04.11.2016 / 22:48

1 resposta

3

Chamando notificações de aplicativos no Ubuntu

Definitivamente, o terceiro, usando subprocess.call() ou subprocess.Popen() . Observando para importar, mas subprocess . Nada de novo para instalar. Simples e fácil, sempre funciona perfeitamente.

Alguns exemplos:

  1. Apenas uma notificação por texto:

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

  2. Um título e algum texto:

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

  3. Um ícone, um título e algum texto:

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

por Jacob Vlijm 04.11.2016 / 23:09