notify.pl (2420B)
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | ## ## Put me in ~/.irssi/scripts, and then execute the following in irssi: ## ## /load perl ## /script load notify ## use strict; use Irssi; use vars qw($VERSION %IRSSI); use HTML::Entities; $VERSION = "0.5"; %IRSSI = ( authors => 'Luke Macken, Paul W. Frields', contact => 'lewk@csh.rit.edu, stickster@gmail.com', name => 'notify.pl', # description => 'Use D-Bus to alert user to hilighted messages', description => 'Use notify-send to alert user to hilighted messages', license => 'GNU General Public License', url => 'http://code.google.com/p/irssi-libnotify', ); Irssi::settings_add_str('notify', 'notify_remote', ''); sub sanitize { my ($text) = @_; encode_entities($text,'\'<>&'); my $apos = "'"; my $aposenc = "\'"; $text =~ s/$apos/$aposenc/g; $text =~ s/"/\\"/g; return $text; } sub notify { my ($server, $summary, $message) = @_; # Make the message entity-safe $summary = sanitize($summary); $message = sanitize($message); # my $cmd = "EXEC - " . # "dbus-send --session /org/irssi/Irssi org.irssi.Irssi.IrssiNotify" . # " string:'" . $summary . "'" . # " string:'" . $message . "'"; my $cmd = "EXEC - " . "notify-send '" . $summary . "' '" . $message . "'"; $server->command($cmd); my $remote = Irssi::settings_get_str('notify_remote'); if ($remote ne '') { my $cmd = "EXEC - ssh -q " . $remote . " \"dbus-send --session /org/irssi/Irssi org.irssi.Irssi.IrssiNotify" . " string:'" . $summary . "'" . " string:'" . $message . "'\""; $server->command($cmd); } } sub print_text_notify { my ($dest, $text, $stripped) = @_; my $server = $dest->{server}; return if (!$server || !($dest->{level} & MSGLEVEL_HILIGHT)); $stripped =~ s/^\<.[^\>]+\>.// ; notify($server, "Ping!", $stripped); } sub message_private_notify { my ($server, $msg, $nick, $address) = @_; return if (!$server); notify($server, "PM from ".$nick, $msg); } sub dcc_request_notify { my ($dcc, $sendaddr) = @_; my $server = $dcc->{server}; return if (!$dcc); notify($server, "DCC ".$dcc->{type}." request", $dcc->{nick}); } Irssi::signal_add('print text', 'print_text_notify'); Irssi::signal_add('message private', 'message_private_notify'); Irssi::signal_add('dcc request', 'dcc_request_notify'); |