ポートをリッスンしてメッセージをフィルタリングし、それらに基づいてアクションを実行するか、イベントを無視することを提案する Perl スクリプトがあります。
特定のタイムアウト後に「アクションを実行」と「無視」ボタンを含む通知ウィンドウ(ダイアログウィンドウではない)を表示したいと思います。
これまでのところ、次のようなものがあります。
my @react = ("somecommand", "someoptions); # based on what regex a message matched
my $cmd = "xmessage";
my $cmd_args = "-print -timeout 7 -buttons React,Dismiss $message"; # raw message from port
open XMSG, "$cmd $cmd_args |";
while (<XMSG>) {
if ($_ eq "React\n") {
do something...
}
}
しかし、一度に 1 つの通知しか処理できず、次のメッセージは、前のメッセージが破棄されるか、反応するか、タイムアウトになるまで表示されないため、非常に悪い決定です。xmessage からリターン コードを取得するまで何もできず、xmessage にコマンドを実行させることもできません。イベント ID を導入し、xmessage が出力するソケットをリッスンすれば、おそらくできると思いますが、複雑になりすぎると思います。
それで、Linux用のライブラリまたはユーティリティがあり、それぞれがコマンドをトリガーするボタンで通知のようなウィンドウを描画するのだろうか?