回答:
この質問は本当に興味深いので、答えとして。
dbus-monitor
実行されるとシグナルを待ち、到着するとシグナルをキャッチして適切な情報を提供します。同様に、通知に関する情報を取得するために実行できます。実行すると:
dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
通知を待ち、通知が到着すると通知の情報を提供します。
たとえば、音が増減したり、曲のトラックが変更されたり、その他のメッセージが表示された場合。notify-send
他の端末でコマンドを使用してデスクトップ通知を手動で作成しています:
notify-send "Hello How are you?"
次に、dbus-monitor
コマンドが実行されている最初の端末は次のようなメッセージを表示します。
saurav@saurav-P4I45Gx-PE:~$ dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
string ":1.473"
method call sender=:1.474 -> dest=:1.475 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
string "notify-send"
string ""
string "Hello How Are You?"
string ""
string "urgency"
これで、上記の出力を簡単に渡してespeak
メッセージを読み取ることができます。例えば、
上記のdbus-monitor
コマンドを次のように置き換えると、通知メッセージが表示されます。
チェック、それはどのように機能しますか:
ターミナルでこのコマンドを実行し、実行したままにします。
dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "string" | grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | grep --line-buffered -v '^\s*$' | xargs -I '{}' espeak {}
私はそれが非常に長くなったのを知っていますが、実際の通知のフィルタリングがそれを長くしたので、それを小さくする他の方法はありません。
次に、上記で説明した方法notify-send
またはその他の方法でデスクトップ通知を実行します。私は使用していnotify-send
ます。したがって、他の端末で次のコマンドを実行します:
notify-send "Hello! I am Saurav Kumar."
コマンドを実行するとすぐに、通知が読み上げられます。
それは私の4-5時間を食べましたが、私はそれを機能させることができて今幸せです。
独自のコマンドをのようsaynoti
にして、読み取り通知が必要なときに毎回実行することもできます。これらの手順に従うことで、次のことが可能になります。
まず、実際のコマンドをというファイルに保存しますsaynoti
。実際のコマンド名になる任意のファイル名を使用できます。
次に、ファイルを実行可能にして、次の場所に移動またはコピーします/bin
。
chmod +x saynoti
sudo cp saynoti /bin
これで、新しいコマンドを実行して読み上げ通知を開始できます。
saynoti
実行中のプロセスを強制終了するには、次のコマンドを実行します。
pkill dbus-monitor
または、が実行されているターミナルでCtrl+ Cを押すだけsaynoti
です。
この質問をありがとうございます。この質問のために、私は多くのことを学びました。:)
問題が発生した場合、またはさらに変更/修正が必要な場合は返信してください。最終的な作業バージョンを入手していただければ幸いです。
dbus-monitor
、私は学び始めたいと思います
私の電子メールアドレスに余分な "が付いている問題がありました。そのため、読み上げるためにespeakがまったく必要ないため、これを上記のコード行に追加しました;)
| sed 's / \ "// g' |
=>
| grep --line-buffered -v '^ \ s * $' | sed 's / \ "// g' | xargs -I '{}' espeak {}
クールな仕事。notify-send lib自体を微調整するよりもはるかに優れています4「こんにちは!私はSaurav Kumarです。」
更新:安定して動作しません。使用します| tee -a $ file |