0

ポートをリッスンしてメッセージをフィルタリングし、それらに基づいてアクションを実行するか、イベントを無視することを提案する 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用のライブラリまたはユーティリティがあり、それぞれがコマンドをトリガーするボタンで通知のようなウィンドウを描画するのだろうか?

4

2 に答える 2

1

初投稿時に見れなかったのが悔やまれます。これらの線に沿って何かを実行できる GUI ツールキットがいくつかあります。Primaは、Perl 用に特別に構築されたツールキットであり、外部ライブラリとの依存関係はありません。

ポップアップ ダイアログだけが必要な場合は、ウィンドウをポップアップするタスクを使用可能なライブラリに委譲するAskモジュールがあります。

于 2013-07-20T13:04:49.143 に答える
0

興味のある方のために、私はそのための小さな Tcl/Tk プログラムを作成しました。完全なコード (48 行すべて) はhttp://cloudcabin.org/read/twobutton_notifyにあります。その周りにロシア語のテキスト。

于 2013-07-20T12:40:08.603 に答える