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);