1# awaybar.pl -- initially built for Irssi 0.8.9 2# thanks to mood.pl for practically allowing me 3# to copy the approach.. 4use strict; 5use Irssi; 6use Irssi::TextUI; 7use 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 sbitems => 'awaybar', 16 license => 'Public domain', 17); 18 19Irssi::statusbar_item_register('awaybar', 0, 'awaybar'); 20Irssi::signal_add('away mode changed', 'awaybar_redraw'); 21 22sub awaybar { 23 my ($item, $get_size_only) = @_; 24 my $away_reason = !Irssi::active_server() ? undef : Irssi::active_server()->{away_reason}; 25 26 if (defined $away_reason && length $away_reason) { 27 my %r = ('\{' => '(', 28 '\}' => ')', 29 '%' => '%%',); 30 $away_reason =~ s/$_/$r{$_}/g for (keys %r); 31 32 #my $format = $theme->format_expand("{sb_awaybar $away_reason}"); 33 my $format = "{sb Away: $away_reason}"; 34 35 $item->{min_size} = $item->{max_size} = length($away_reason); 36 $item->default_handler($get_size_only, $format, 0, 1); 37 } else { 38 $item->{min_size} = $item->{max_size} = 0; 39 } 40} 41 42sub awaybar_redraw { 43 Irssi::statusbar_items_redraw('awaybar'); 44} 45