我有一个 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是否有一个库或实用程序来绘制带有按钮的类似通知的窗口,每个按钮都会触发一个命令?