デスクトップ通知を受け取るには?

デスクトップ通知を受け取るには?

他のデバイスにデスクトップ通知を表示したいです(Gnome 3を使用しています)。だから私は自分のコンピュータから通知を受け取り、インターネット経由で送信できるソフトウェアを書くのが好きです。残念ながら、通知を受け取り、操作を実行する方法のコードを開始するのに良い点が見つかりませんでした。

APIはありますか?

答え1

さて、Gnome通知はD-BUSを使用してメッセージを転送します。これ矮小な規範これらのクラスの使用方法を説明し、org.freedesktop.Notifications.*さまざまな書式設定のヒントを提供します。通常はHTML形式です。

ただし、他のマシンのD-BUSとリモートで通信しないでください。私たちはどれだけのセキュリティ侵害が発生しているのかわかりません。

それにもかかわらず、トラフィックを受信し、ローカルに存在するD-BUSと通信するプログラムをターゲットシステムに常にインストールできます。

org.freedesktop.Notifications.*プログラムの作成をより簡単にするラッパーとして使用できる2つのオプションがあります。

  • libnotify:これは通知の事実上の標準であり、gnomeだけでなく他の多くの機能もサポートしています。

  • notify-sharp-3:奇妙に聞こえますが、これはいくつかの通知仕様に基づいて構築されたオープンソースC#ベースの機能です。ある時点ではというユニークな言語もありましたが、boo徐々に消えていますlibnotify

さて、libnotify行きます。

libnotify通知デーモンとの通信方法を知るバイナリが付属しています(たとえば、これらの通知はバックグラウンドデーモンによって表示されます)。コマンドはnotify-send非常に使いやすいです。

notify-send 'Meeting in 5 minutes' 'John from the <b>QA Team</b> just found a bug that should never had happened.  Seriously, we are doing something wrong'

これで通知が表示されます。しかし、リモートで作ることは少し複雑です。bob現在コンピュータでXorgを実行しているユーザーを知っていて、krakatoakrakatoaにlibnotifyがインストールされていて、gnome通知デーモンが実行されていると仮定すると、次のことができます。

ssh bob@krakatoa \
    notify-send 'Meeting in 5 minutes' \
    'John from the <b>QA Team</b> just found a bug that should never had happened.  Seriously, we are doing something wrong'

しかし、すべてのコンピュータですべてのユーザーを見つけるのは難しいかもしれません。実行するスクリプトを作成し、ps -afe | grep gnomeユーザーを見つけて実行できますsu -u <user> DISPLAY=:0 notify-send ...。しかし、繰り返しますが、ssh最初のように要求を送信しないでください。root

これアーチスウィキlibnotify複数の言語のインターフェースのリストがあります。ここでは独自のデーモンを生成し、通知メッセージに独自の通信プロトコルを使用できます。たとえば、特別にGNOMEを追いかけているので、python Gobjectこれがぴったりです。

簡単に言うと:

  • D-BUSで通知が発生します。

  • D-BUSはリモートで直接アクセスできません。

  • libnotifyターゲットマシンで制御するプログラムを使用してD-BUSにアクセスできます。

引用:

関連情報