美文网首页优秀linux文章Linux学习之路我用 Linux
一行代码实现通用Linux桌面通知

一行代码实现通用Linux桌面通知

作者: 左蓝 | 来源:发表于2017-01-16 17:46 被阅读398次

    最近写一个脚本需要用到桌面通知,然后找了点资料,记录一下。

    首先时安装一个 lib 包:

    sudo apt-get install libnotify-bin
    

    安装之后就可以使用 /usr/bin/notify-send 来向桌面发送通知了。

    $ notify-send --help
    Usage:
      /usr/bin/notify-send [OPTION...] <SUMMARY> [BODY] - create a notification
    
    Help Options:
      -?, --help                        Show help options
    
    Application Options:
      -u, --urgency=LEVEL               Specifies the urgency level (low, normal, critical).
      -t, --expire-time=TIME            Specifies the timeout in milliseconds at which to expire the notification.
      -a, --app-name=APP_NAME           Specifies the app name for the icon
      -i, --icon=ICON[,ICON...]         Specifies an icon filename or stock icon to display.
      -c, --category=TYPE[,TYPE...]     Specifies the notification category.
      -h, --hint=TYPE:NAME:VALUE        Specifies basic extra data to pass. Valid types are int, double, string and byte.
      -v, --version                     Version of the package.
    

    从上面可以看到 notify-send 的基本功能就这么几个。

    • 比如直接向桌面发送一个通知:
    notify-send "hello world"
    
    文字通知
    • 使用 -u 给通知设定通知等级,一般我们选择默认。
    • 使用 -t 可以设定通知信息停留的时间(时间单位毫秒,为 0 时表示需要手动关闭通知,实际上我测试无效,怎样都是 5 秒就消失了),比如:
    notify-send -t 2000 "hello world"
    
    • 使用 -a 参数可以添加应用名称,在一些发行版中会把通知收进其通知收纳盒,使用这个参数可以知道是哪个应用发送的通知。
    • 使用 -i 可以指定通知的图标,使用绝对路径或者相对路径都可以,例如:
    /usr/bin/notify-send -i /data/favicon.png "hello,$USER"
    
    自定义图标的通知
    • 使用 -c 和 -a 有些类似,都是为了在通知多时知道通知的分类,一般发行版都没有这些功能。
    • 使用 -h 可以在通知中发送额外的信息,便于程序读取通知中的含义。

    扩展

    添加标题

    notify-send "我是标题" "我是内容,测试用的通知。"
    
    带标题的通知

    指定屏幕

    如果你有多个屏幕,使用 DISPLAY=:0.0 可以给第一个屏幕发送通知,以此类推,详细自己百度,我只有一个屏幕,笑。

    在通知中执行命令

    除了可以在通知中调用显示变量之外(上面 -i 的例子hello,$USER),还可以使用下面的方式在发送通知时执行命令:

    notify-send "当前目录是 `pwd`"
    
    可执行命令的通知

    示例

    随便举个例子:
    实现后台升级系统完成后自动提示升级成功。

    DISPLAY=:0.0 notify-send -t 3 "系统升级...." && sudo apt-get upgrade -y && notify-send -t 3 "升级完成。"
    

    中间的命令你还可以替换成任意命令,比如使用 wget 下载文件结束后提示下载完成。

    你还可以使用 alias 把 notify-send 放进 .bashrc 或者 .zshrc 中:

    alias ns="DISPLAY=:0.0 notify-send "
    

    然后直接使用 ns 来调用通知,简单好用~~

    相关文章

      网友评论

      本文标题:一行代码实现通用Linux桌面通知

      本文链接:https://www.haomeiwen.com/subject/rfspbttx.html