Linux 中带有按钮的通知窗口

问题描述 投票:0回答:2

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

perl notifications xorg
2个回答
1
投票

很抱歉我第一次发布时没有看到这个。有几个 GUI 工具包可以按照这些思路做一些事情。 Prima 是专门为 Perl 构建的工具包,没有外部库依赖项。

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.