html/loadavg.pl


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