use strict;
use Irssi;
use Irssi::Irc;
use vars qw($VERSION %IRSSI);
$VERSION = "0.3";
%IRSSI = (
"authors" => 'Morten Hersson',
"contact" => 'mhersson at gmail dot com',
"name" => 'allpubmsgs',
"description" => 'Sends all public messsages from all channels to one
window, exluding the currently active window and entries in the exclude list. Se
parates channels with different colors.',
"license" => 'Public Domain',
"changed" => '2011-28-03'
);
# Change the names to channels you visit and color to your liking
my %chan_colors = (
'#archlinux' => '%m',
'##mac' => '%y',
'#macosx' => '%r',
'#freenode' => '%g',
);
# Channels to exclude
my @exclude_list = qw{#mac1};
sub sig_printtext
{
my ($dest, $text, $stripped) = @_;
my $color="%N"; #Set color to default
# If channel is a key in hash change color
while(my ($key, $value) = each(%chan_colors)){
if (lc $dest->{target} eq lc $key) {
$color = $value;
}
}
# Fix so any % char are printed
$text =~ s/\%/%%/g;
if (grep {m|^$dest->{target}$|} @exclude_list) {} else {
if ($dest->{level} & MSGLEVEL_PUBLIC) {
my $windowname = Irssi::window_find_name('allpubmsgs');
my $witem = Irssi::active_win()->{active}; #Get active w
indow
if (lc $witem->{name} ne lc $dest->{target} ) { #If msg
is not from active window print it to allpubmsg
$windowname->print($color . $dest->{target} . ":
%n " . $text, MSGLEVEL_CLIENTCRAP) if ($windowname);
}
}
}
}
my $windowname = Irssi::window_find_name('allpubmsgs');
if (!$windowname)
{
Irssi::command("window new");
Irssi::command("window name allpubmsgs");
}
Irssi::signal_add(
{
'print text', 'sig_printtext'
}
);