別途インストール&設定&起動が必要。
notification
デスクトップ通知。
$ zenity --notification --text "完了しました。"
エラー
以下のようなエラーが出て表示されない。
** (zenity:10313): WARNING **: Error showing notification: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files
インストール&設定
sudo apt-get install -y libnotify-cil-dev
インストールしても同様のエラー。以下参照。
$ cd /usr/share/dbus-1/services
$ sudo pcmanfm /usr/share/dbus-1/services
org.freedesktop.Notifications.service
ファイルを新規作成する- 以下内容を記入して保存する
[D-BUS Service] Name=org.freedesktop.Notifications Exec=/usr/lib/notification-daemon-1.0/notification-daemon
あとはこの設定に従って実行する通知アプリが必要っぽい。
$ sudo apt-get install notification-daemon
使ってみる
起動する。
$ /usr/lib/notification-daemon/notification-daemon
常駐するので別ターミナルで以下を実行する。
$ zenity --notification --text "完了しました。"
アイコン画像を指定する。
$ zenity --notification --text "完了しました。" --window-icon /usr/share/pixmaps/python.xpm
常駐アイコンをクリックすると履歴がみれる。履歴の項目をクリックすると消える。
標準入力から操作する (--listen
)
exec 3> >(zenity --notification --text テスト --listen) echo "message: 完了しました。" >&3 echo "icon: /usr/share/pixmaps/python.xpm" >&3 exec 3>&-
help
$ zenity --help-notification 用法: zenity [オプション...] 通知アイコンのオプション --notification 通知領域に表示する --text=TEXT 通知する文字列を指定する --listen 標準入力からコマンドを受け取る --hint=TEXT ヒントの通知を指定する
前回まで
追記
クリックイベントをフックすることはできない
通知がきたとき、それをクリックすると何らかの処理を実行したい。たとえば指定URLをブラウザで開くなど。
zenity --help-notification
にて以下のような説明がある。
--listen 標準入力からコマンドを受け取る
これを使えばできるのかと思いきや、メッセージを変わりに表示するだけである。まったくもって無用な存在。以下コマンドはまったく同一の結果になる、といえばわかるだろう。
echo "message:hi" | zenity --notification --listen
zenity --notification --text 'hi'
最初は以下のようなことをしたが、
echo 'pluma /tmp/a.txt' | zenity --notification --listen --text 'クリックするとテキストエディタを起動してほしかった。'
以下のように怒られる。ムキー!
標準入力からのコマンドを解析できませんでした
残念ながら未だに実装されていないらしい。ずっと要求されている機能のようだが……。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12
- zenity 3.28.1
$ uname -a Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux