summaryrefslogtreecommitdiffstats
path: root/scripts/awaybar.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/awaybar.pl')
-rw-r--r--scripts/awaybar.pl44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/awaybar.pl b/scripts/awaybar.pl
new file mode 100644
index 0000000..7d11ae5
--- /dev/null
+++ b/scripts/awaybar.pl
@@ -0,0 +1,44 @@
+# awaybar.pl -- initially built for Irssi 0.8.9
+# thanks to mood.pl for practically allowing me
+# to copy the approach..
+use strict;
+use Irssi;
+use Irssi::TextUI;
+use vars qw($VERSION %IRSSI);
+
+$VERSION = "0.1.1";
+%IRSSI = (
+ authors => 'Simon Shine',
+ contact => 'http://shine.eu.org/',
+ name => 'awaybar',
+ description => 'Provides a menubar item with away message',
+ sbitems => 'awaybar',
+ license => 'Public domain',
+);
+
+Irssi::statusbar_item_register('awaybar', 0, 'awaybar');
+Irssi::signal_add('away mode changed', 'awaybar_redraw');
+
+sub awaybar {
+ my ($item, $get_size_only) = @_;
+ my $away_reason = !Irssi::active_server() ? undef : Irssi::active_server()->{away_reason};
+
+ if (defined $away_reason && length $away_reason) {
+ my %r = ('\{' => '(',
+ '\}' => ')',
+ '%' => '%%',);
+ $away_reason =~ s/$_/$r{$_}/g for (keys %r);
+
+ #my $format = $theme->format_expand("{sb_awaybar $away_reason}");
+ my $format = "{sb Away: $away_reason}";
+
+ $item->{min_size} = $item->{max_size} = length($away_reason);
+ $item->default_handler($get_size_only, $format, 0, 1);
+ } else {
+ $item->{min_size} = $item->{max_size} = 0;
+ }
+}
+
+sub awaybar_redraw {
+ Irssi::statusbar_items_redraw('awaybar');
+}