html/my_beep.pl


   1 #!/usr/bin/irssi
   2 #
   3 # irssi beep with-command-script
   4 # (C) 2003 Remco den Breeje
   5 # inspired by Georg Lukas
   6 
   7 # howtoinstall:
   8 #  copy this file to ~/.irssi/script/
   9 #  in irssi:
  10 #   $/script load my_beep.pl
  11 #  change the settings
  12 #   $/set beep_msg_level HILIGHT
  13 #   $/set beep_cmd beep 
  14 
  15 
  16 $VERSION = "0.9";
  17 %IRSSI = (
  18     authors	=> "Remco den Breeje",
  19     contact	=> "stacium or stek (most of the time) @ quakenet.org",
  20     name	=> "my_beep",
  21     description	=> "runs arbitrary command instead of system beep, includes flood protection",
  22     license	=> "Public Domain",
  23     url		=> "http://www.xs4all.nl/~stacium/irssi/my_beep.html",
  24 );
  25 
  26 use Irssi;
  27 
  28 my $can_I_beep = 1;
  29 
  30 sub beep_overflow_timeout() {
  31 	$can_I_beep = 1;
  32 	# and kill the loop
  33         Irssi::timeout_remove($timeout_tag);
  34         $autoaway_to_tag = undef;
  35 }
  36 
  37 sub my_beep() {
  38 	my $beep_cmd = Irssi::settings_get_str("beep_cmd");
  39 	if ($beep_cmd) {
  40 		my $beep_flood = Irssi::settings_get_int('beep_flood');
  41                 # check on given beep_flood
  42                 if($beep_flood < 0)
  43 		{
  44 			Irssi::print("Warning! Wrong value for beep_flood (time in milisecs)");
  45 			Irssi::signal_stop();
  46 			return;
  47 		}
  48 		if ($can_I_beep) {
  49 		        $timeout_tag = Irssi::timeout_add($beep_flood, 'beep_overflow_timeout', undef);
  50 			system($beep_cmd);
  51 			$can_I_beep = 0;
  52 		}
  53 		Irssi::signal_stop();
  54 	}
  55 }
  56 
  57 Irssi::settings_add_str("lookandfeel", "beep_cmd", "echo INeedToBeSet > /dev/null");
  58 Irssi::settings_add_int("lookandfeel", "beep_flood", 2000);
  59 Irssi::signal_add("beep", "my_beep");