如何使用命令行制作具有自定义大小、颜色和位置的通知气泡?

如何使用命令行制作具有自定义大小、颜色和位置的通知气泡?

我想知道是否有任何命令行方法可以在 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。您将拥有世界上所有的自定义选项,但这需要一些初始工作才能开始。

相关内容