Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl Linux中带按钮的通知窗口_Perl_Notifications_Xorg - Fatal编程技术网

Perl Linux中带按钮的通知窗口

Perl Linux中带按钮的通知窗口,perl,notifications,xorg,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

我有一个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...
    }
}
my@react=(“somecommand”,“someoptions”)#基于消息匹配的正则表达式
我的$cmd=“xmessage”;
my$cmd_args=“-print-timeout 7-按钮反应,解除$message”#来自端口的原始消息
打开XMSG,“$cmd$cmd|u参数”;
而(){
如果($\uEQ“反应\n”){
做点什么。。。
}
}
但它一次只能处理一个通知,而下一条消息在前一条消息被撤销、响应或超时之前不会出现,因此这是一个非常糟糕的决定。在从xmessage获得返回代码之前,我无法执行任何操作,并且我无法让xmessage运行命令。如果我引入事件ID并侦听sock,我可能可以et在哪里打印xmessage,但我想这会使事情变得太复杂


因此,我想知道Linux是否有一个库或实用程序可以像windows那样绘制通知,每个窗口都有按钮,每个按钮都会触发一个命令?

如果有人感兴趣,我最后为此编写了一个小Tcl/Tk程序,完整的代码(全部48行)可以在这里找到:,您可以忽略它周围的俄语文本。

很抱歉,我在第一次发布时没有看到这篇文章。有几个gui工具包可以实现这些功能。它是专门为Perl构建的工具包,没有外部库依赖项


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

您可以使用fork或调用其他脚本来控制窗口。是的。但我也希望将所有交互传递给窗口。例如,脚本调用
mywindowlib-按钮foo-命令$bar-超时3
并进一步发挥作用。问题是,
mywindowlib
的功能可能会起作用。这是现有对话框工具的统一接口,这不是必需的,也可能无法解决问题。无论如何,我已经编写了一个Tk程序包,它正是我想要的方式,我想知道是否应该将其作为一个答案发布。这是一个我从未听说过的很好的库例如,不确定是否有办法像在Tk中那样设置窗口类型。