libotify / notify-send:如果正文包含“<”或“>”,则不打印正文

The*_*Ret 2 libnotify notify-send

我使用的是 Linux Mint 18.1,MATE。

我正在使用 notify-send 命令来可视化键的名称(例如<enter>),同时通过 python 脚本将它们发送到当前窗口。大约两周以来,notify-send 显示出一种奇怪的行为。我知道 bash 的基本语法是notify-send [OPTIONS] <summary> [body].

基本问题

执行时notify-send -t 0 '<enter>' 'text body',一切看起来都很好: 在此处输入图片说明

但是,当尝试使用 打印消息正文中的密钥名称时notify-send -t 0 'Summary' '<enter>',我得到:

在此处输入图片说明

同样的情况发生在notify-send -t 0 'Summary' '<', notify-send -t 0 'Summary' '>'notify-send -t 0 'Summary' \<

如果正文包含 < 或 > ,为什么正文打印为空白有什么想法吗?


解决方法(失败)

我尝试使用 python 模块代替:

from gi.repository import Notify
Notify.init("App Name")
Notify.Notification.new("Summary","<enter>").show()
Run Code Online (Sandbox Code Playgroud)

但结果与上图 2 中的结果相同。


附加信息:

zenity --info --title='Summary' --text='<enter>'在 bash 中尝试时,我收到一条错误消息:

(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'

而不是 text <enter>,打开信息对话框有令人惊讶的文本:All updates are complete.

meu*_*euh 5

通知规范说,身体可以包括简单的标记,所以内部的任何标记“<...>”将被删除,如果可能的解释。例如,"<b>hello</b>"将以粗体显示单词。

您可以使用标准的 html 实体机制并显示一个<with&lt;>with &gt;give,例如,

notify-send 'Summary' '&lt;enter&gt;'
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您可以只使用多行摘要,例如:

notify-send 'Summary
<enter>'
Run Code Online (Sandbox Code Playgroud)