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

Moh*_*mad 3 notification command-line notification-area

我想知道是否有任何命令行方法可以在 Ubuntu 通知气泡中发出通知。或者是否有属于该任务的文件?
我想要以下特性:

  • 我自己的消息出现在通知气泡中。
  • 这些通知出现在屏幕上的特定位置,而不仅仅是默认位置。
  • 通知气泡的大小可以更改。
  • 它的颜色是可以改变的。

更新

我读到“如何发送自定义桌面通知?” 现在,我知道这notify-send将帮助我实现我的目标。但是这个命令有一些限制。我想知道是否有任何其他命令可以使用,或者任何文件可以更改,以便可以更改通知气泡的大小颜色位置

Mir*_*osz 6

从历史上看,对“通知”问题有不同的处理方法。对于“通知”是什么,甚至没有达成共识。我们是否仅使用它来告诉用户发生了某些事情?我们期待他采取任何行动吗?如果是这样,如何收集输入?该操作可以延迟,还是用户应该立即采取行动?能延迟多久?用户应该如何查看所有待处理的操作?所有这些问题的答案形成了不同团队提出的解决方案。

最重要的是,您的问题没有单一、明确的答案。但是您可以尝试多种不同的方法并选择适合您特定用例的方法。

通知发送

曾几何时,Linux 上出现了一种通知标准。如果没记错的话,其背后的驱动力是 GNOME 3 团队。他们努力让所有应用程序以统一的方式通知用户,并发现桌面环境的某些组件应该负责处理(排队、显示、收集输入)所有通知。应用程序只是将它们的通知发送到该组件并希望用户收到它。

您可以使用notify-send命令行应用程序创建这种通知。请注意,它有目的的不允许自定义。您只传递您的消息,其余的交给桌面环境。Unity (Ubuntu)、GNOME 3 和 KDE SC/Plasma 支持这种通知。

osd_cat

osd_cat是在 X 服务器层上显示文件内容的应用程序。通过使用-dswitch,你可以让它在一段时间后自动消失,这使得它有点适合作为通知应用程序。

默认字体会很难看,但您可以使用-fswitch使其更好。-f参数必须是由xfontsel.

可以通过以下方式创建示例通知:

echo -e "sample\nnotification" |osd_cat -p middle -A center -d 1 -f '-*-helvetica-*-r-*-*-34-*-*-*-*-*-*-*' -O 1 -c '#fff'
Run Code Online (Sandbox Code Playgroud)

与 相反notify-send,您可以将通知放置在屏幕上的任何位置,并且您可以对其进行一些自定义(选择字体和颜色;没有背景颜色)。主要的缺点是它是 X 特定的,所以它不能在 Mir 或 Wayland 下工作。

zenity/kdialog

zenity(对于 GTK 桌面 - Unity 和 GNOME)和kdialog(对于 Qt 桌面 - KDE 和 LxQt)允许用户从命令行创建简单的对话框窗口。您可以将文本放入其中,也可以放入一些预定义的图标、按钮、输入表单、列表、文件选择器或进度条。只需稍加工作,您就可以将它们用作通知用户的一种方式。

zenity支持--width=--height=命令行开关,但不提供任何更改窗口位置的方法。就个人而言,我使用--title=给窗口一些自定义标题和窗口管理器规则。窗口管理器(在我的例子中是 KWin)选择符合特定条件的所有窗口,比如包含字符串的标题,并修改它们的属性。对于通知,我将这些窗口放在屏幕的右下角,删除窗口标题栏,使它们出现在所有虚拟桌面上并从任务栏中删除它们。

定制解决方案

如果以上程序都不符合您的要求,您可以随时编写自定义解决方案。python 提供对 GTK 和 Qt 的绑定,并允许您相对轻松地创建自定义 GUI。您将拥有世界上所有的自定义选项,但这需要一些初始工作才能开始。