我有一个 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...
}
}
但是它一次只能处理一条通知,并且直到前一条消息被忽略、响应或超时后才会出现下一条消息,所以这是一个非常糟糕的决定。在从 xmessage 获取返回代码之前我无法执行任何操作,并且无法让 xmessage 运行命令。好吧,如果我引入事件 ID 并监听 xmessage 打印的套接字,我也许可以,但我想这会让事情变得太复杂。
所以我想知道 Linux 是否有一个库或实用程序来绘制带有按钮的类似通知的窗口,每个按钮都会触发一个命令?
如果有人感兴趣,我最终为此编写了一个小型 Tcl/Tk 程序,完整的代码(全部 48 行)可以在这里找到:
https://web.archive.org/web/20150207011454/http://cloudcabin.org/read/twobutton_notify
你可以忽略它周围的俄语文本。