A more recent version of scripts may be available at scripts.irssi.org.
remove activity from all windows:
alias UNACT script exec foreach $$w (Irssi::windows()) { Irssi::command("window goto $$w->{refnum}")\;} ; window goto $winref
calc with (10) decimals:
alias CALC exec - if which bc &>/dev/null\; then echo 'scale=10\;$*' | bc | awk '{print "$*="$$1}'\; else echo bc was not found\; fi
Dump perl object (e.g. /dump Irssi::active_win):
alias DUMP script exec use Data::Dumper\; print Data::Dumper->new([\\$0-])->Dump
Put output of a command in the current window (e.g. /here help blah) (does not work with whois, and other output coming from the server):
alias HERE script exec \$a=Irssi::active_win\;sub b{Irssi::signal_remove('print text','b')\;Irssi::signal_stop()\;\$a->print(\$_[1],\$_[0]->{'level'})\;Irssi::signal_add_first('print text','b')\;}\;Irssi::signal_add_first('print text','b')\;\$a->command("$*")\;
do /lastlog, but for all windows... /alllast -HILIGHT would show all hilights in every buffer in the current window (like hilightwindow.pl, but not 'life')
alias ALLLASTLOG script exec foreach (Irssi::windows()) {Irssi::command("lastlog - -window \$_->{'refnum'} $*")\;}
execute a command on a given server (e.g. "/tag ircnet join #irssi" would join irssi on ircnet (if you're connected to ircnet)):
alias TAG script exec Irssi::server_find_tag('$0')->command('$1-');
list (say) your currently loaded scripts (just the names, on one line):
alias LISTSCRIPTS script exec foreach \$s (sort grep(s/::\$//, keys %Irssi::Script::)) {\$a .= "\$s "\;}\; Irssi::active_win->command("say \$a")\;
list (print) a list of servers you're currently connected to, what nick you have there, and on which channels you are:
alias LISTCHANS script exec foreach (Irssi::servers()){\$a="\$_->{'chatnet'}(\$_->{'address'}) \$_->{'nick'}:"\; foreach (\$_->channels()) {\$a.=' '.(\$_->{'ownnick'}->{'op'}?'@':\$_->{'ownnick'}->{'voice'}?'+':'')."\$_->{'name'}"\;}\;print \$a\;}
mass-op all non-voiced (to op everyone just use /op *):
alias MOP script exec foreach \$n (Irssi::active_win->{'active'}->nicks()) {if (\$n->{'op'} == 0 && \$n->{'voice'} == 0) {\$a .= "\$n->{'nick'} "\;}}\; Irssi::active_win->command("OP \$a")\;
Show for how long you have been connected to the current server:
alias CONNECTIONUPTIME script exec \$a=`date +%s` - Irssi::active_win->{'active_server'}->{'connect_time'}\; Irssi::print( int(\$a/3600/24)."d ".int(\$a/3600%24)."h ". int(\$a/60%60)."m ". int(\$a%60)."s")\;
Goto to x'th last window (0 = last, 1 = second last)
alias window_goto_last_minus script exec Irssi::command("window goto ".(sort{\$b<=>\$a}map{\$_->{refnum}}Irssi::windows())[$0])
Remove all bans set by you
alias mubmy script exec \$c=Irssi::active_win->{'active'}\;if(\$c){foreach \$ban (\$c->bans()){if(\$ban->{'setby'} =~ /^$N/){\$unban.=\$ban->{'ban'}.' '\;}}}\;\$c->command("unban \$unban");