diff options
Diffstat (limited to 'scripts/loadavg.pl')
-rw-r--r-- | scripts/loadavg.pl | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/scripts/loadavg.pl b/scripts/loadavg.pl new file mode 100644 index 0000000..44e7ac4 --- /dev/null +++ b/scripts/loadavg.pl @@ -0,0 +1,47 @@ +# system load average statusbar item +# using vm.loadavg mib or /proc/loadavg +# +# /statusbar window add loadavg +# /set loadavg_refresh + +use strict; +use Irssi; +use Irssi::TextUI; +use vars qw($VERSION %IRSSI); + +$VERSION="0.4"; +%IRSSI = ( + authors => 'aki', + contact => 'aki@evilbsd.info', + name => 'loadavg', + description => 'display a loadavg statusbar item using vm.loadavg mib or /proc/loadavg', + sbitems => 'loadavg', + license => 'public domain', +); + +my ($timeout, $lavg); + +sub reload { Irssi::statusbar_items_redraw('loadavg'); } + +sub setup { + my $time = Irssi::settings_get_int('loadavg_refresh'); + Irssi::timeout_remove($timeout); + $timeout = Irssi::timeout_add($time, 'reload' , undef); +} + +sub show { + my ($item, $get_size_only) = @_; + get(); chomp $lavg; + $item->default_handler($get_size_only, "{sb ".$lavg."}", undef, 1); +} + +sub get { + if ($^O eq 'freebsd' || $^O eq 'netbsd' || $^O eq 'openbsd' ) { + $lavg=`sysctl vm.loadavg|cut -d" " -f3-5`; + } elsif ($^O eq 'linux') { $lavg=`cat /proc/loadavg|cut -d" " -f1-3`; } +} + +Irssi::statusbar_item_register('loadavg', '$0', 'show'); +Irssi::settings_add_int('misc', 'loadavg_refresh', 15000); +Irssi::signal_add('setup changed', 'setup'); +$timeout = Irssi::timeout_add(Irssi::settings_get_int('loadavg_refresh'), 'reload' , undef); |