1# system load average statusbar item 2# using vm.loadavg mib or /proc/loadavg 3# 4# /statusbar window add loadavg 5# /set loadavg_refresh 6 7use strict; 8use Irssi; 9use Irssi::TextUI; 10use vars qw($VERSION %IRSSI); 11 12$VERSION="0.4"; 13%IRSSI = ( 14 authors => 'aki', 15 contact => 'aki@evilbsd.info', 16 name => 'loadavg', 17 description => 'display a loadavg statusbar item using vm.loadavg mib or /proc/loadavg', 18 sbitems => 'loadavg', 19 license => 'public domain', 20); 21 22my ($timeout, $lavg); 23 24sub reload { Irssi::statusbar_items_redraw('loadavg'); } 25 26sub setup { 27 my $time = Irssi::settings_get_int('loadavg_refresh'); 28 Irssi::timeout_remove($timeout); 29 $timeout = Irssi::timeout_add($time, 'reload' , undef); 30} 31 32sub show { 33 my ($item, $get_size_only) = @_; 34 get(); chomp $lavg; 35 $item->default_handler($get_size_only, "{sb ".$lavg."}", undef, 1); 36} 37 38sub get { 39 if ($^O eq 'freebsd' || $^O eq 'netbsd' || $^O eq 'openbsd' ) { 40 $lavg=`sysctl vm.loadavg|cut -d" " -f3-5`; 41 } elsif ($^O eq 'linux') { $lavg=`cat /proc/loadavg|cut -d" " -f1-3`; } 42} 43 44Irssi::statusbar_item_register('loadavg', '$0', 'show'); 45Irssi::settings_add_int('misc', 'loadavg_refresh', 15000); 46Irssi::signal_add('setup changed', 'setup'); 47$timeout = Irssi::timeout_add(Irssi::settings_get_int('loadavg_refresh'), 'reload' , undef); 48