From 0c43cce461b9ced27adbdd6973a93adb2a859a93 Mon Sep 17 00:00:00 2001 From: ramnes Date: Thu, 3 Mar 2016 17:18:21 +0100 Subject: Add hilightcmd --- _data/scripts.yaml | 10 ++++++++++ scripts/hilightcmd.pl | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 scripts/hilightcmd.pl diff --git a/_data/scripts.yaml b/_data/scripts.yaml index a86ef36..66a0139 100644 --- a/_data/scripts.yaml +++ b/_data/scripts.yaml @@ -1795,6 +1795,16 @@ name: hignore.pl url: http://irssi.hauwaerts.be/hignore.pl version: '0.02' +- + authors: ramnes + contact: contact@ramnes.eu + description: 'Call a system command when receiving a hilight' + filename: hilightcmd.pl + license: GPLv3 + modified: '2016-02-29 11:44:16' + name: hilightcmd + url: https://github.com/ramnes/hilightcmd + version: 0.1 - authors: "Timo 'cras' Sirainen, Mark 'znx' Sangster" contact: 'tss@iki.fi, znxster@gmail.com' diff --git a/scripts/hilightcmd.pl b/scripts/hilightcmd.pl new file mode 100644 index 0000000..b17f624 --- /dev/null +++ b/scripts/hilightcmd.pl @@ -0,0 +1,48 @@ +# +# 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 got a ssh and beep on your remote: +# /set hilightcmd_systemcmd ssh user@host beep & +# + +use Irssi; +use POSIX; +use vars qw($VERSION %IRSSI); +use Text::Sprintf::Named qw(named_sprintf); + +$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/"/\\"/g; + system(named_sprintf( + Irssi::settings_get_str('hilightcmd_systemcmd'), + message => $stripped + )); + } +}); + + +Irssi::settings_add_bool('hilightcmd', 'hilightcmd_privmsg', 1); +Irssi::settings_add_bool('hilightcmd', 'hilightcmd_currentwin', 1); +Irssi::settings_add_str('hilightcmd', 'hilightcmd_systemcmd', ''); -- cgit v1.2.3