我想知道是否有任何命令行方法可以在 Ubuntu 通知气泡中制作通知。或者是否有属于此任务的文件?
我想要以下特征:
- 我自己的消息出现在通知气泡中。
- 这些通知会出现在屏幕上的特定位置,而不仅仅是默认位置。
- 通知气泡的大小可以改变。
- 其颜色可以改变。
更新
我读“我如何发送自定义桌面通知?”现在,我知道这notify-send
将有助于我实现目标。但这个命令有一些限制。我想知道是否有其他命令可以使用,或者是否有文件可以更改,以便尺寸,颜色和位置通知气泡可以改变吗?
答案1
从历史上看,解决“通知”问题的方法各不相同。甚至对于“通知”是什么都没有共识。我们是否仅用它来告诉用户发生了什么事?我们期望他采取任何行动吗?如果是这样,那么如何收集输入?该操作可以延迟吗,还是用户应该立即采取行动?可以延迟多长时间?用户应该如何查看所有待处理的操作?所有这些问题的答案形成了不同团队提出的解决方案。
归根结底,您的问题没有单一、明确的答案。但您可以尝试不同的方法,选择一种适合您特定用例的方法。
通知发送
有一次,Linux 上的通知标准出现了。如果我没记错的话,它背后的推动力是 GNOME 3 团队。他们努力为所有应用程序提供统一的通知用户方式,并发现桌面环境的某个组件应该负责处理(排队、显示、收集输入)所有通知。应用程序只需将其通知发送给该组件并希望用户收到它。
您可以使用命令行应用程序创建此类通知notify-send
。请注意,它故意不允许自定义。您只传递消息,其余部分留给桌面环境。Unity(Ubuntu)、GNOME 3 和 KDE SC/Plasma 支持此类通知。
osd_cat
osd_cat
是在 X 服务器层显示文件内容的应用程序。通过使用-d
开关,您可以使其在一段时间后自动消失,这使得它有点适合用作通知应用程序。
默认字体会很丑,但你可以使用-f
开关使其变得更好。-f
参数必须是由 构造的字符串xfontsel
。
可以通过以下方式创建示例通知:
echo -e "sample\nnotification" |osd_cat -p middle -A center -d 1 -f '-*-helvetica-*-r-*-*-34-*-*-*-*-*-*-*' -O 1 -c '#fff'
与 不同notify-send
,您可以将通知放置在屏幕上的任何位置,并且可以对其进行一些自定义(选择字体和颜色;没有背景颜色)。主要缺点是它是 X 专用的,因此它无法在 Mir 或 Wayland 下工作。
zenity/kdialog
zenity
(对于 GTK 桌面 - Unity 和 GNOME)和kdialog
(对于 Qt 桌面 - KDE 和 LxQt)允许用户从命令行创建简单的对话框窗口。您可以在其中放置文本,也可以放置一些预定义的图标、按钮、输入表单、列表、文件选择器或进度条。只要您稍加努力,就可以使用它们来通知用户。
zenity
支持--width=
命令--height=
行开关,但不提供任何更改窗口位置的方法。就我个人而言,我用它来--title=
给窗口一些自定义标题和窗口管理器规则。窗口管理器(在我的情况下是 KWin)选择所有符合某些条件的窗口,例如包含字符串的标题,并修改它们的属性。对于通知,我将这些窗口放在屏幕的右下角,删除窗口标题栏,使它们出现在所有虚拟桌面上,并将它们从任务栏中删除。
定制解决方案
如果以上程序都不符合您的要求,您可以随时编写自定义解决方案。python 提供与 GTK 和 Qt 的绑定,可让您相对轻松地创建自定义 GUI。您将拥有世界上所有的自定义选项,但这需要一些初始工作才能开始。