他のデバイスにデスクトップ通知を表示したいです(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を実行しているユーザーを知っていて、krakatoa
krakatoaに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にアクセスできます。
引用: