一行代碼實(shí)現(xiàn)通用Linux桌面通知

最近寫一個(gè)腳本需要用到桌面通知,然后找了點(diǎn)資料,記錄一下。

首先時(shí)安裝一個(gè) lib 包:

sudo apt-get install libnotify-bin

安裝之后就可以使用 /usr/bin/notify-send 來(lái)向桌面發(fā)送通知了。

$ 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 的基本功能就這么幾個(gè)。

  • 比如直接向桌面發(fā)送一個(gè)通知:
notify-send "hello world"
文字通知
  • 使用 -u 給通知設(shè)定通知等級(jí),一般我們選擇默認(rèn)。
  • 使用 -t 可以設(shè)定通知信息停留的時(shí)間(時(shí)間單位毫秒,為 0 時(shí)表示需要手動(dòng)關(guān)閉通知,實(shí)際上我測(cè)試無(wú)效,怎樣都是 5 秒就消失了),比如:
notify-send -t 2000 "hello world"
  • 使用 -a 參數(shù)可以添加應(yīng)用名稱,在一些發(fā)行版中會(huì)把通知收進(jìn)其通知收納盒,使用這個(gè)參數(shù)可以知道是哪個(gè)應(yīng)用發(fā)送的通知。
  • 使用 -i 可以指定通知的圖標(biāo),使用絕對(duì)路徑或者相對(duì)路徑都可以,例如:
/usr/bin/notify-send -i /data/favicon.png "hello,$USER"
自定義圖標(biāo)的通知
  • 使用 -c 和 -a 有些類似,都是為了在通知多時(shí)知道通知的分類,一般發(fā)行版都沒(méi)有這些功能。
  • 使用 -h 可以在通知中發(fā)送額外的信息,便于程序讀取通知中的含義。

擴(kuò)展

添加標(biāo)題

notify-send "我是標(biāo)題" "我是內(nèi)容,測(cè)試用的通知。"
帶標(biāo)題的通知

指定屏幕

如果你有多個(gè)屏幕,使用 DISPLAY=:0.0 可以給第一個(gè)屏幕發(fā)送通知,以此類推,詳細(xì)自己百度,我只有一個(gè)屏幕,笑。

在通知中執(zhí)行命令

除了可以在通知中調(diào)用顯示變量之外(上面 -i 的例子hello,$USER),還可以使用下面的方式在發(fā)送通知時(shí)執(zhí)行命令:

notify-send "當(dāng)前目錄是 `pwd`"
可執(zhí)行命令的通知

示例

隨便舉個(gè)例子:
實(shí)現(xiàn)后臺(tái)升級(jí)系統(tǒng)完成后自動(dòng)提示升級(jí)成功。

DISPLAY=:0.0 notify-send -t 3 "系統(tǒng)升級(jí)...." && sudo apt-get upgrade -y && notify-send -t 3 "升級(jí)完成。"

中間的命令你還可以替換成任意命令,比如使用 wget 下載文件結(jié)束后提示下載完成。

你還可以使用 alias 把 notify-send 放進(jìn) .bashrc 或者 .zshrc 中:

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

然后直接使用 ns 來(lái)調(diào)用通知,簡(jiǎn)單好用~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,597評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,119評(píng)論 25 708
  • 原文出處: http://www.androidchina.net/6174.html Notification在...
    木木00閱讀 12,545評(píng)論 3 32
  • 原始: 中產(chǎn)階級(jí)的新苦惱 也許,經(jīng)過(guò)多年打拚的你,終于苦盡甘來(lái),住上了豪宅,開上了豪車,上下里外全副...
    馮志慧閱讀 434評(píng)論 0 0
  • 春風(fēng)有意吻香肩,倦影無(wú)心裹愁眠。夢(mèng)里飛花輕似霧,冥思碎地幻如煙。
    冷風(fēng)吹HUI閱讀 574評(píng)論 0 1

友情鏈接更多精彩內(nèi)容