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