やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

zenity --notification でデスクトップ通知する

 別途インストール&設定&起動が必要。

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 "完了しました。"

f:id:ytyaru:20190313080354p:plain

 アイコン画像を指定する。

$ zenity --notification --text "完了しました。" --window-icon /usr/share/pixmaps/python.xpm

f:id:ytyaru:20190313080534p:plain

 常駐アイコンをクリックすると履歴がみれる。履歴の項目をクリックすると消える。

f:id:ytyaru:20190313080613p:plain

標準入力から操作する (--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