2013-04-30 4 views
0

포트 및 필터 메시지를 수신하고 이에 따라 동작을 취하거나 이벤트를 무시하도록 제안하는 Perl 스크립트가 있습니다.Linux의 버튼이있는 알림 창

나는 '조치 취하기'와 '무시'버튼이있는 알림 창 (대화 창이 아님)을 보여주고 싶습니다. 이는 특정 시간 초과 후 갈 것입니다.

은 지금까지 나는 이런 일이 :

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가 인쇄하는 소켓을 청취하면 너무 복잡해 질 수 있습니다.

그래서 리눅스가 명령을 트리거하는 버튼이있는 알림 창을 그리는 라이브러리 또는 유틸리티가 있습니까?

+0

포크를하거나 다른 스크립트를 호출하여 창을 제어 할 수 있습니다. – kjprice

+0

예. 그러나 모든 상호 작용을 창에 전달하고 싶습니다. 나는. 스크립트는'mywindowlib -buttons foo -command $ bar -timeout 3'을 호출하고 더 작동합니다. 문제는 'mywindowlib'입니다. –

+0

http://search.cpan.org/~kck/UI-Dialog/lib/UI/Dialog.pod 사용할 수 있습니다. – kjprice

답변

0

누군가 관심이있는 경우 작은 Tcl/Tk 프로그램을 작성 했으므로 전체 코드 (모두 48 행)를 여기에서 찾을 수 있습니다 : http://cloudcabin.org/read/twobutton_notify, 그리고 러시아어 텍스트는 무시할 수 있습니다.

1

죄송합니다. 처음 게시 된 것이 확인되지 않았습니다. 이 줄을 따라 뭔가를 할 수있는 몇 가지 gui 툴킷이 있습니다. Prima은 Perl을 위해 특별히 제작되었으며 외부 라이브러리 종속성이없는 툴킷입니다.

팝업 대화 상자가 필요한 경우에는 팝업 창 작업을 사용 가능한 모든 라이브러리에 위임하는 Ask 모듈이 있습니다.

+0

이전에는 들어 본 적이없는 멋진 라이브러리입니다. 거기에 Tk와 같은 창 유형을 설정하는 방법이 있는지 확실하지 않습니다. –