在 Linux 中从 Shell 脚本显示 GUI 通知
在 Linux 中,有多种方法可以从 shell 脚本显示 GUI 通知,但一种常见的方法是使用 notify-send 命令。此命令是 libnotify 库的一部分,通常预安装在大多数 Linux 发行版上。
以下是如何使用 notify-send 显示标题为“Hello”、消息为“World”的通知的示例:
notify-send "Hello" "World"
您只需将此命令添加到 shell 脚本中即可在脚本中使用它,或者将通知文本赋值给一个变量并使用它。
message="This is your reminder" notify-send "Reminder" "${message}"
此外,您可以使用各种选项自定义通知的外观和行为,例如指定图标、设置紧急级别或控制通知持续时间。
使用 notify-send 命令
notify-send 命令用于从命令行或脚本显示 GUI 通知。该命令的基本语法如下:
notify-send [options] <title> <message>
其中 <title> 是通知的标题,<message> 是通知的正文文本。
以下是一些您可以与 notify-send 命令一起使用的常见选项:
-u, --urgency=LEVEL - 指定通知的紧急级别。LEVEL 可以是“low”(低)、“normal”(普通)、“critical”(严重)之一。
-t, --expire-time=TIME - 指定通知的持续时间(以毫秒为单位)。
-i, --icon=ICON - 指定要与通知一起使用的图标。
-c, --category=TYPE - 指定通知类型(例如,“email”(邮件)、“im”(即时消息))。
-h, --hint=TYPE:NAME:VALUE - 指定要传递给通知服务器的提示。
您可以使用以下示例:
notify-send -u critical -t 5000 -i /path/to/icon.png "Title" "The message"
此命令将显示一个严重通知,该通知将在 5 秒后过期,并使用位于 /path/to/icon.png 的图标。
从 Shell 脚本发送通知
您可以像从命令行一样,使用 notify-send 命令从 shell 脚本发送通知。以下是一个简单的 shell 脚本示例,它发送一个标题为“Script Complete”(脚本完成)且消息为“The script has finished running”(脚本已完成运行)的通知:
#!/bin/bash # your script commands go here # send the notification notify-send "Script Complete" "The script has finished running"
您还可以使用变量来存储通知标题和消息,然后将它们传递给 notify-send 命令。
#!/bin/bash # your script commands go here # define the title and message title="Script Complete" message="The script has finished running" # send the notification notify-send "$title" "$message"
您还可以发送通知以告知特定任务的完成或失败,例如当任务具有特定状态时:
#!/bin/bash # your script commands go here # Define the title and message title="Task Failed" message="The task has failed to run" if task_status -eq 0; then title="Task Complete" message="The task has been completed successfully" notify-send -u normal "$title" "$message" else notify-send -u critical "$title" "$message" fi
此脚本将检查任务的状态。如果任务成功完成,它将发送一个普通通知,标题为“Task Complete”(任务完成),消息为“The task has been completed successfully”(任务已成功完成),否则它将发送一个严重通知,标题为“Task Failed”(任务失败),消息为“The task has failed to run”(任务运行失败)。
使用 zenity 实用程序
在 Linux 中,从 shell 脚本显示 GUI 通知另一种方法是使用 zenity 实用程序。zenity 是一个命令行工具,允许您在命令行和 shell 脚本中显示 GTK+ 对话框。它可用于显示各种对话框,包括警报、错误消息和询问提示。
以下是如何使用 zenity 显示标题为“Hello”、消息为“World”的通知的示例:
zenity --info --title="Hello" --text="World"
您还可以使用 --warning、--error、--question 选项代替 --info 来显示不同类型的通知。--title 选项设置对话框的标题,--text 选项设置对话框的文本。
您还可以使用 zenity 显示带有进度条的通知,例如:
(for i in {1..100}; do echo $i; sleep 0.1; done) | zenity --progress --title="Title" --text="Your process is running" --auto-close --auto-kill
此命令将显示一个进度条,该进度条在达到 100% 后关闭并自行终止。
您可以在 shell 脚本中以与从命令行使用相同的方式使用 zenity 命令,只需将其添加到脚本中并传递任何必要的选项和参数即可。
从 Shell 脚本显示对话框和通知
zenity 是一个命令行工具,可用于从 shell 脚本在图形用户界面 (GUI) 中显示各种类型的对话框和通知。
以下是一些您可以使用 zenity 显示的不同类型的对话框和通知的示例:
信息对话框:
zenity --info --title="Hello" --text="World"
警告对话框:
zenity --warning --title="Warning" --text="This is a warning message"
错误对话框:
zenity --error --title="Error" --text="An error has occurred"
询问对话框:
zenity --question --title="Question" --text="Do you want to continue?"
文本输入对话框:
zenity --entry --title="Enter your name" --text="Please enter your name"
文件选择对话框:
zenity --file-selection --title="Select a file" --file-filter='*.txt'
列表对话框
zenity --list --title="Select an option" --column "Option" --column "Description" --print-column=2 "Option 1" "This is the first option" "Option 2" "This is the second option" "Option 3" "This is the third option"
您只需将 zenity 命令添加到脚本中并传递任何必要的选项和参数即可在 shell 脚本中使用它。
您还可以通过将其存储在变量中来在脚本中使用 zenity 命令的输出,例如:
response=$(zenity --question --title="Question" --text="Do you want to continue?") if [ "$response" = "0" ]; then # user clicked OK else # user clicked Cancel fi
请记住,zenity 需要在系统中安装 GTK+ 库,某些精简发行版中可能不存在,在这种情况下,您可能需要手动安装它。
结论
有多种方法可以从 Linux 中的 shell 脚本显示 GUI 通知和对话框,包括使用 notify-send 命令和 zenity 实用程序。notify-send 是一个可用于发送桌面通知的命令行工具,它通常预安装在大多数 Linux 发行版上。另一方面,zenity 是一个可用于在命令行和 shell 脚本中显示 GTK+ 对话框的命令行工具,它提供了比 notify-send 更多的选项,并且对于显示各种类型的对话框和通知很有用。