способом, не используя никаких дополнительных модулей или еще чего либо
реализовать довольно-таки удобную функцию уведомления о приватных сообщениях и
хайлайтах через notify-osd, используя приведенный здесь скрипт. Конечно же, вы
можете использовать что угодно вместо notify-osd по вашему желанию, и тогда это
будет лишь небольшим примером того как можно облагородить такой, кажущийся
многим с первого взгляда убогим, IRC-клиент.
#!/usr/bin/perl -w -C use strict; use Irssi; use Irssi::Irc; use Desktop::Notify; our $timeout = 3000; sub sig_public { my @host; my ($server, $msg, $nick, $address, $target) = @_; my $mynick = $server->{nick}; chomp $mynick; if ($msg =~ m/.*$mynick.*/ ) { # Замена разных спецсимволов на более понятные для notify-osd $msg =~ s/</</; $msg =~ s/>/>/; $msg =~ s/'/`/g; my $notify = Desktop::Notify->new(); my $notification = $notify->create(summary => "Irssi:$nick [$target]", body => "$msg", timeout => $timeout); $notification->show(); $notification->close(); } } sub sig_private { my ($server, $msg, $nick, $address) = @_; $msg =~ s/</</; $msg =~ s/>/>/; $msg =~ s/'/`/g; my $notify = Desktop::Notify->new(); my $notification = $notify->create(summary => "Irssi:$nick [private]", body => "$msg", timeout => $timeout); $notification->show(); $notification->close(); } Irssi::signal_add_last('message public', 'sig_public'); Irssi::signal_add_last('message private', 'sig_private');
Конечно же, это работает только если клиент запущен локально у вас на машине, а
не в screen на удаленном сервере.
P.S. есть бага и не могу пофиксить пока никак:
11:21 Argument "" isn't numeric in subroutine entry at /usr/lib/perl5/Net/DBus/Binding/Iterator.pm line 445.
Комментариев нет:
Отправить комментарий