Advertisement
richardgv

notify.pl

Jul 13th, 2011
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.51 KB | None | 0 0
  1. use vars qw($VERSION %IRSSI);
  2.  
  3. use Irssi;
  4. use String::ShellQuote;
  5.  
  6. $VERSION = '1.00';
  7. %IRSSI = (
  8.     authors     => 'Richard Grenville',
  9.     contact     => 'HIDDEN@gmail.com',
  10.     name        => 'Notification',
  11.     description => 'Sound + libnotify notification' .
  12.     license     => 'GPL',
  13. );
  14.  
  15. Irssi::signal_add_last("message public", "msg_pub") => \&msg_pub;
  16. Irssi::signal_add_last("message private", "msg_priv") => \&msg_priv;
  17. Irssi::signal_add_last("message join", "msg_join") => \&msg_join;
  18. Irssi::signal_add_last("message part", "msg_part") => \&msg_part;
  19. Irssi::signal_add_last("message quit", "msg_quit") => \&msg_quit;
  20. # Irssi::signal_add_last("message own_public", "msg_test") => \&msg_test;
  21.  
  22. my %exclusions = (
  23.     KottNet => [ '#teeworlds', '#kottnet', 'QUIT' ],
  24. );
  25.  
  26. sub strescape {
  27.     my ($str) = @_;
  28.     $str =~ s/^-/ -/g;
  29.     return String::ShellQuote::shell_quote($str);
  30. }
  31.  
  32. sub cmdexec {
  33.     my ($summary, $msg, $icon, $sound) = @_;
  34.     system("notify-send --icon=/usr/share/pixmaps/pidgin/tray/hicolor/32x32/status/pidgin-tray-" . $icon . " " . strescape($summary) . " " . strescape($msg) . " &> /dev/null & ");
  35.     # system("notify-send " . strescape($summary) . " " . strescape($msg) . " & ");
  36.     system("mplayer2 /usr/share/sounds/purple/" . $sound . " -really-quiet -volume 100 & ");
  37. }
  38.  
  39. sub chkexcl {
  40.     my ($server_rec, $msg, $nick, $tgt) = @_;
  41.     return 0 if ($msg !~ /$server_rec->{'nick'}/i && $exclusions{$server_rec->{'tag'}} && ($tgt ~~ $exclusions{$server_rec->{'tag'}} || '*' ~~ $exclusions{$server_rec->{'tag'}}));
  42.     return 0 if ($server_rec->{'nick'} eq $nick);
  43.     return 1;
  44. }
  45.  
  46. sub msg_pub {
  47.     my ($server_rec, $msg, $nick, $addr, $tgt) = @_;
  48.     cmdexec($nick . " on " . $tgt, $msg, "pending.png", "receive.wav") if chkexcl($server_rec, $msg, $nick, $tgt);
  49. }
  50.  
  51. sub msg_priv {
  52.     my ($server_rec, $msg, $nick, $addr) = @_;
  53.     cmdexec($nick . " - Private", $msg, "email.png", "receive.wav");
  54. }
  55.  
  56. sub msg_join {
  57.     my ($server_rec, $channel, $nick, $addr) = @_;
  58.     cmdexec($nick . " - Join " . $channel, $addr, "available.png", "login.wav") if chkexcl($server_rec, '', $nick, $channel);
  59.  
  60. }
  61.  
  62. sub msg_part {
  63.     my ($server_rec, $channel, $nick, $addr, $msg) = @_;
  64.     cmdexec($nick . " - Part " . $channel, $msg, "busy.png", "logout.wav") if chkexcl($server_rec, $msg, $nick, $channel);
  65.  
  66. }
  67.  
  68. sub msg_quit {
  69.     my ($server_rec, $nick, $addr, $msg) = @_;
  70.     cmdexec($nick . " - Quit", $msg, "offline.png", "logout.wav") if chkexcl($server_rec, $msg, $nick, 'QUIT');
  71. }
  72.  
  73. sub msg_test {
  74.     my ($server_rec, $msg, $tgt) = @_;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement