html/awaybar.pl
1 # awaybar.pl -- initially built for Irssi 0.8.9
2 # thanks to mood.pl for practically allowing me
3 # to copy the approach..
4 use strict;
5 use Irssi;
6 use Irssi::TextUI;
7 use vars qw($VERSION %IRSSI);
8
9 $VERSION = "0.1.1";
10 %IRSSI = (
11 authors => 'Simon Shine',
12 contact => 'http://shine.eu.org/',
13 name => 'awaybar',
14 description => 'Provides a menubar item with away message',
15 license => 'Public domain',
16 );
17
18 Irssi::statusbar_item_register('awaybar', 0, 'awaybar');
19 Irssi::signal_add('away mode changed', 'awaybar_redraw');
20
21 sub awaybar {
22 my ($item, $get_size_only) = @_;
23 my $away_reason = !Irssi::active_server() ? undef : Irssi::active_server()->{away_reason};
24
25 if (defined $away_reason && length $away_reason) {
26 my %r = ('\{' => '(',
27 '\}' => ')',
28 '%' => '%%',);
29 $away_reason =~ s/$_/$r{$_}/g for (keys %r);
30
31 #my $format = $theme->format_expand("{sb_awaybar $away_reason}");
32 my $format = "{sb Away: $away_reason}";
33
34 $item->{min_size} = $item->{max_size} = length($away_reason);
35 $item->default_handler($get_size_only, $format, 0, 1);
36 } else {
37 $item->{min_size} = $item->{max_size} = 0;
38 }
39 }
40
41 sub awaybar_redraw {
42 Irssi::statusbar_items_redraw('awaybar');
43 }