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");