-
Notifications
You must be signed in to change notification settings - Fork 234
/
hilightcmd.pl
53 lines (44 loc) · 1.68 KB
/
hilightcmd.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#
# 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', '');