带有按钮的通知窗口

时间:2013-04-30 14:22:57

标签: perl notifications xorg

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

2 个答案:

答案 0 :(得分:1)

对不起,我第一次发布时没看到这个。有几个gui工具包可以在这些方面做点什么。 Prima是专为Perl构建的工具包,没有外部库依赖项。

当你只需要一个弹出对话框时,就会有Ask模块将弹出窗口的任务委托给任何可用的库。

答案 1 :(得分:0)

如果有人感兴趣,我最终为此编写了一个小Tcl / Tk程序,完整代码(全部48行)可以在这里找到:http://cloudcabin.org/read/twobutton_notify,你可以忽略俄文中的文字在它周围。