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...
    }
}

但是它一次只能处理一个通知,并且下一条消息直到前一条消息被关闭、响应或超时才会出现,所以这是一个非常糟糕的决定。在从 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 回答