Thursday, 22 January 2009

irssi提醒脚本

喜欢irssi这个命令行上的IRC,每天都会打开上#ppmm, #ubuntu-cn, #java, #python等频道~~ 命令行工具的一个缺陷在于,提醒功能不完善。虽然用screen,在状态栏上也有提醒,不过并不是任何时候都会盯着命令行的,所以还得有一个图形界面的提醒。 幸好irssi提供了扩展脚本这个功能,所以能够用Perl对其进行扩展。在网上搜索一番之后,发现有人写过提醒脚本,调用gtk-dialog-info这个命令行在屏幕右下角生成提醒窗口。但原始脚本并不是很适合我,所以作了一番修改之后,成了下面这样:
##
## Put me in ~/.irssi/scripts, and then execute the following in irssi:
##
##       /load perl
##       /script load notify
##

use strict;
use Irssi;
use vars qw($VERSION %IRSSI);

$VERSION = "0.01";
%IRSSI = (
  authors     => 'Luke Macken',
  contact     => 'lewk@csh.rit.edu',
  name        => 'notify.pl'
);

sub notify {
    my ($server, $msg, $nick, $address, $target) = @_;

    return if (!($msg =~ /anticlockwise/));

    system("notify-send -i gtk-dialog-info -t 5000 '$nick' '$msg'");
}

Irssi::signal_add('message public', 'notify');
原始脚本采用的irssi信号是print text,虽然这个信号能够检测个人信息,却无法得到消息的内容(所谓的text是指的系统消息,却不是聊天消息)。所以就改成了message public,然后message public又没有一个通用的检测是否个人消息的方法,所以就只能用正则表达式来判断了,有些傻,不过管用。

2 comments:

Unknown said...

哈哈,你怎么叫做"xxxxx猪"啊?
以后多写点东西,我都比较感兴趣的,哈哈

举止优雅的猪 said...

额……我一直都叫这个的,哈哈~~
最早从QQ开始,后来不用QQ了,不过还是叫这个