Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
54 lines (44 sloc) 1.68 KB
#
# Call a custom system command when receiving a hilight.
# Originally based on hilightwin.pl work and djcraven5's idea for making remote
# computer beep through ssh.
#
# Example of use, assuming you have ssh and beep on your remote:
# /set hilightcmd_systemcmd ssh user@host beep &
#
# The hilighted text may be passed as a quoted string:
# /set hilightcmd_systemcmd printf "%s\n" %(message)s >> ~/hilights
#
use strict;
use Irssi;
use POSIX;
use vars qw($VERSION %IRSSI);
use Text::Sprintf::Named qw(named_sprintf);
use String::ShellQuote qw(shell_quote_best_effort);
$VERSION = "0.1";
%IRSSI = (authors => "Guillaume Gelin",
contact => "contact\@ramnes.eu",
name => "hilightcmd",
description => "Call a system command when receiving a hilight",
license => "GNU GPLv3",
url => "https://github.com/ramnes/hilightcmd");
Irssi::signal_add('print text' => sub {
my ($dest, $text, $stripped) = @_;
my $opt = MSGLEVEL_HILIGHT;
if (Irssi::settings_get_bool('hilightcmd_privmsg')) {
$opt = MSGLEVEL_HILIGHT|MSGLEVEL_MSGS;
}
if (($dest->{level} & ($opt))
&& ($dest->{level} & MSGLEVEL_NOHILIGHT) == 0
&& (Irssi::active_win()->{refnum} != $dest->{window}->{refnum}
|| Irssi::settings_get_bool('hilightcmd_currentwin'))) {
$stripped =~ s/^\s+|\s+$//g;
system(named_sprintf(
Irssi::settings_get_str('hilightcmd_systemcmd'),
message => shell_quote_best_effort $stripped
));
}
});
Irssi::settings_add_bool('hilightcmd', 'hilightcmd_privmsg', 1);
Irssi::settings_add_bool('hilightcmd', 'hilightcmd_currentwin', 1);
Irssi::settings_add_str('hilightcmd', 'hilightcmd_systemcmd', '');