libotify / notify-send: o texto do corpo não é impresso se contiver '' ou ''

3

Estou no Linux Mint 18.1, MATE.

Estou usando o comando notify-send para visualizar o nome das chaves (como <enter> ), enviando-as para a janela atual por meio de um script python. Por cerca de duas semanas, o comando notify-send mostrou um comportamento estranho . Eu sei que a sintaxe básica no bash é notify-send [OPTIONS] <summary> [body] .

Problema básico

Ao executar notify-send -t 0 '<enter>' 'text body' , tudo parece bem:

Noentanto,aotentarimprimironomedachavenocorpodamensagemcomnotify-send-t0'Summary''<enter>',obtenho:

Omesmoacontececomnotify-send-t0'Summary''<',notify-send-t0'Summary''>'ounotify-send-t0'Summary'\<

Qualquerideiadeporqueotextodocorpoéimpressoembrancosecontiver<ou>?

Soluçãoalternativa(falha)

Eutenteiusarummódulopythonistead:

fromgi.repositoryimportNotifyNotify.init("App Name")
Notify.Notification.new("Summary","<enter>").show()

Mas o resultado é o mesmo da imagem 2 acima.

Informações adicionais:

Ao tentar zenity --info --title='Summary' --text='<enter>' no bash, recebo uma mensagem de erro:

(zenity:4952): Gtk-WARNING **: Failed to set text '<enter>' from markup due to error parsing markup: Error on line 1 char 24: Element 'markup' was closed, but the currently open element is 'enter'

E, em vez do texto <enter> , o diálogo de informações de abertura tem o texto surpreendente: All updates are complete.

    
por TheoRet 12.06.2017 / 00:20

1 resposta

4

A especificação de notificação diz que body pode incluir marcação simples, portanto, quaisquer tags dentro de "< ... >" será removido e interpretado, se possível. Por exemplo, "<b>hello</b>" mostrará a palavra em negrito.

Você pode usar o mecanismo de entidade html padrão e mostrar um < com &lt; e > com &gt; dando, por exemplo,

notify-send 'Summary' '&lt;enter&gt;'

Se preferir, basta usar um resumo multilinha, por exemplo:

notify-send 'Summary
<enter>'
    
por 12.06.2017 / 09:56