summaryrefslogtreecommitdiff
path: root/lib/Loadbars
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Loadbars')
-rw-r--r--lib/Loadbars/Config.pm110
-rw-r--r--lib/Loadbars/Constants.pm44
-rw-r--r--lib/Loadbars/HelpDispatch.pm332
-rw-r--r--lib/Loadbars/Main.pm1092
-rw-r--r--lib/Loadbars/Shared.pm67
-rw-r--r--lib/Loadbars/Utils.pm61
6 files changed, 0 insertions, 1706 deletions
diff --git a/lib/Loadbars/Config.pm b/lib/Loadbars/Config.pm
deleted file mode 100644
index 365d8c6..0000000
--- a/lib/Loadbars/Config.pm
+++ /dev/null
@@ -1,110 +0,0 @@
-package Loadbars::Config;
-
-use strict;
-use warnings;
-
-use Loadbars::Utils;
-use Loadbars::Shared;
-
-sub read () {
- return unless -f Loadbars::Constants->CONFFILE;
-
- display_info(
- "Reading configuration from " . Loadbars::Constants->CONFFILE );
- open my $conffile, Loadbars::Constants->CONFFILE
- or die "$!: " . Loadbars::Constants->CONFFILE . "\n";
-
- while (<$conffile>) {
- chomp;
- s/[\t\s]*?#.*//;
-
- next unless length;
-
- my ( $key, $val ) = split '=';
-
- unless ( defined $val ) {
- display_warn("Could not parse config line: $_");
- next;
- }
-
- trim($key);
- trim($val);
-
- if ( not exists $C{$key} ) {
- display_warn("There is no such config key: $key, ignoring");
-
- }
- else {
- display_info(
-"Setting $key=$val, it might be overwritten by command line params."
- );
- $C{$key} = $val;
- }
- }
-
- close $conffile;
-}
-
-sub write () {
- display_warn( "Overwriting config file " . Loadbars::Constants->CONFFILE )
- if -f Loadbars::Constants->CONFFILE;
-
- open my $conffile, '>', Loadbars::Constants->CONFFILE or do {
- display_warn( "$!: " . Loadbars::Constants->CONFFILE );
-
- return undef;
- };
-
- for ( grep !/title/, keys %C ) {
- print $conffile "$_=$C{$_}\n";
- }
-
- close $conffile;
-}
-
-# Recursuve function
-sub get_cluster_hosts ($;$);
-
-sub get_cluster_hosts ($;$) {
- my ( $cluster, $recursion ) = @_;
-
- unless ( defined $recursion ) {
- $recursion = 1;
-
- }
- elsif ( $recursion > Loadbars::Constants->CSSH_MAX_RECURSION ) {
- error( "CSSH_MAX_RECURSION reached. Infinite circle loop in "
- . Loadbars::Constants->CSSH_CONFFILE
- . "?" );
- }
-
- open my $fh, Loadbars::Constants->CSSH_CONFFILE
- or error( "$!: " . Loadbars::Constants->CSSH_CONFFILE );
- my $hosts;
-
- while (<$fh>) {
- if (/^$cluster\s*(.*)/) {
- $hosts = $1;
- last;
- }
- }
-
- close $fh;
-
- unless ( defined $hosts ) {
- error( "No such cluster in "
- . Loadbars::Constants->CSSH_CONFFILE
- . ": $cluster" )
- unless defined $recursion;
-
- return ($cluster);
- }
-
- my @hosts;
- push @hosts, get_cluster_hosts $_, ( $recursion + 1 )
- for ( split /\s+/, $hosts );
-
- return @hosts;
-}
-
-1;
diff --git a/lib/Loadbars/Constants.pm b/lib/Loadbars/Constants.pm
deleted file mode 100644
index 36e0a91..0000000
--- a/lib/Loadbars/Constants.pm
+++ /dev/null
@@ -1,44 +0,0 @@
-package Loadbars::Constants;
-
-use strict;
-use warnings;
-
-use SDL::Color;
-
-use constant {
- COPYRIGHT => '2010-2026 (c) Paul Buetow <loadbars@dev.buetow.org>',
- CONFFILE => $ENV{HOME} . '/.loadbarsrc',
- CSSH_CONFFILE => '/etc/clusters',
- CSSH_MAX_RECURSION => 10,
- COLOR_DEPTH => 32,
- BLACK => [ 0x00, 0x00, 0x00 ],
- BLUE0 => [ 0x00, 0x00, 0xff ],
- LIGHT_BLUE => [ 0x00, 0x00, 0xdd ],
- LIGHT_BLUE0 => [ 0x00, 0x00, 0xcc ],
- BLUE => [ 0x00, 0x00, 0x88 ],
- GREEN => [ 0x00, 0x90, 0x00 ],
- LIGHT_GREEN => [ 0x00, 0xf0, 0x00 ],
- ORANGE => [ 0xff, 0x70, 0x00 ],
- PURPLE => [ 0xa0, 0x20, 0xf0 ],
- RED => [ 0xff, 0x00, 0x00 ],
- WHITE => [ 0xff, 0xff, 0xff ],
- GREY0 => [ 0x11, 0x11, 0x11 ],
- GREY => [ 0xaa, 0xaa, 0xaa ],
- DARK_GREY => [ 0x15, 0x15, 0x15 ],
- YELLOW0 => [ 0xff, 0xa0, 0x00 ],
- YELLOW => [ 0xff, 0xc0, 0x00 ],
- COLOR_WHITE => SDL::Color->new( 0xff, 0xff, 0xff ),
- SYSTEM_BLUE0 => 30,
- USER_ORANGE => 70,
- USER_YELLOW0 => 50,
- INTERVAL => 0.14,
- INTERVAL_NET => 3.0,
- INTERVAL_MEM => 1.0,
- INTERVAL_SDL => 0.14,
- INTERVAL_SDL_WARN => 1.0,
- SUCCESS => 0,
- E_UNKNOWN => 1,
- E_NOHOST => 2,
-};
-
-1;
diff --git a/lib/Loadbars/HelpDispatch.pm b/lib/Loadbars/HelpDispatch.pm
deleted file mode 100644
index bc58ce8..0000000
--- a/lib/Loadbars/HelpDispatch.pm
+++ /dev/null
@@ -1,332 +0,0 @@
-package Loadbars::HelpDispatch;
-
-use strict;
-use warnings;
-
-use Loadbars::Constants;
-use Loadbars::Shared;
-
-sub create () {
- my $hosts = '';
-
- my $textdesc = <<END;
-For more help please consult the manual page or press the 'h' hotkey during program execution and watch this terminal window.
-END
-
- # mode 1: Option is shown in the online help menu (stdout not sdl)
- # mode 2: Option is shown in the 'usage' screen from the command line
- # mode 4: Option is used to generate the GetOptions parameters for Getopt::Long
- # Combinations: Like chmod(1)
-
- my %d = (
- cpuaverage => {
- menupos => 3,
- help => 'Num of cpu samples for avg. (more fluent animations)',
- mode => 6,
- type => 'i'
- },
- cpuaverage_hot_up => {
- menupos => 4,
- cmd => 'a',
- help => 'Increases number of cpu samples for calculating avg. by 1',
- mode => 1
- },
- cpuaverage_hot_dn => {
- menupos => 5,
- cmd => 'y',
- help => 'Decreases number of cpu samples for calculating avg. by 1',
- mode => 1
- },
-
- netaverage => {
- menupos => 6,
- help => 'Num of net samples for avg. (more fluent animations)',
- mode => 6,
- type => 'i'
- },
- netaverage_hot_up => {
- menupos => 7,
- cmd => 'd',
- help => 'Increases number of net samples for calculating avg. by 1',
- mode => 1
- },
- netaverage_hot_dn => {
- menupos => 8,
- cmd => 'c',
- help => 'Decreases number of net samples for calculating avg. by 1',
- mode => 1
- },
-
- netint => {
- menupos => 6,
- help => 'Interface to show netstats for (default: eth0)',
- mode => 6,
- type => 's'
- },
- netint_hot => {
- menupos => 17,
- cmd => 'n',
- help => 'Iterate to next net interface',
- mode => 1
- },
-
- netlink => {
- menupos => 6,
- help =>
-'Force interface link speed (mbit, 10mbit, 100mbit, gbit, 10gbit or a mbytes/s number e.g. 3 for 3mbit)',
- mode => 6,
- type => 's'
- },
- netlink_hot_up => {
- menupos => 9,
- cmd => 'f',
- help => 'Increases net interface link speed reference by factor 10',
- mode => 1
- },
- netlink_hot_dn => {
- menupos => 10,
- cmd => 'v',
- help => 'Decreases net interface link speed reference by factor 10',
- mode => 1
- },
-
- barwidth => {
- menupos => 11,
- help => 'Set bar width',
- mode => 6,
- type => 'i'
- },
- windowwidth_hot_up => {
- menupos => 90,
- help => 'Increase window width by 100px',
- cmd => 'right',
- mode => 1,
- },
- windowwidth_hot_dn => {
- menupos => 91,
- help => 'Decrease window width by 100px',
- cmd => 'left',
- mode => 1,
- },
- windowheight_hot_up => {
- menupos => 92,
- help => 'Increase window height by 100px',
- cmd => 'down',
- mode => 1,
- },
- windowheight_hot_dn => {
- menupos => 93,
- help => 'Decrease window height by 100px',
- cmd => 'up',
- mode => 1,
- },
-
- cluster => {
- menupos => 6,
- help => 'Cluster name from /etc/clusters',
- var => \$C{cluster},
- mode => 6,
- type => 's'
- },
- configuration => {
- menupos => 6,
- cmd => 'c',
- help => 'Show current configuration',
- mode => 4
- },
-
- extended => {
- menupos => 6,
- help => 'Toggle extended display (0 or 1)',
- mode => 7,
- type => 'i'
- },
- extended_hot => {
- menupos => 23,
- cmd => 'e',
- help => 'Toggle extended mode',
- mode => 1
- },
-
- hasagent => {
- menupos => 10,
- help => 'SSH key is already known by the SSH agent (0 or 1)',
- mode => 6,
- type => 'i'
- },
- height => {
- menupos => 10,
- help => 'Set windows height',
- mode => 6,
- type => 'i'
- },
-
- help_hot => {
- menupos => 11,
- cmd => 'h',
- help => 'Prints this help screen',
- mode => 1
- },
-
- hosts => {
- menupos => 12,
- help =>
- 'Comma sep. list of hosts; optional: user@ in front to each host',
- var => \$hosts,
- mode => 6,
- type => 's'
- },
-
- maxwidth => {
- menupos => 16,
- help => 'Set max width',
- mode => 6,
- type => 'i'
- },
-
- quit_hot => { menupos => 16, cmd => 'q', help => 'Quits', mode => 1 },
- writeconfig_hot => {
- menupos => 16,
- cmd => 'w',
- help => 'Write config to config file',
- mode => 1
- },
-
- showcores => {
- menupos => 17,
- help => 'Toggle core display (0 or 1)',
- mode => 7,
- type => 'i'
- },
- showcores_hot =>
- { menupos => 17, cmd => '1', help => 'Toggle show cores', mode => 1 },
-
- showmem => {
- menupos => 17,
- help => 'Toggle mem display (0 or 1)',
- mode => 7,
- type => 'i'
- },
- showmem_hot =>
- { menupos => 17, cmd => '2', help => 'Toggle show mem', mode => 1 },
-
- shownet => {
- menupos => 17,
- help => 'Toggle net display (0 or 1)',
- mode => 7,
- type => 'i'
- },
- shownet_hot =>
- { menupos => 17, cmd => '3', help => 'Toggle show net', mode => 1 },
-
- sshopts =>
- { menupos => 20, help => 'Set SSH options', mode => 6, type => 's' },
-
- title => {
- menupos => 21,
- help => 'Set title bar text',
- mode => 6,
- type => 's'
- },
- );
-
- my %d_by_short = map {
- $d{$_}{cmd} => $d{$_}
-
- } grep {
- exists $d{$_}{cmd}
-
- } keys %d;
-
- my $closure = sub ($;$) {
- my ( $arg, @rest ) = @_;
-
- if ( $arg eq 'command' ) {
- my ( $cmd, @args ) = @rest;
-
- my $cb = $d{$cmd};
- $cb = $d_by_short{$cmd} unless defined $cb;
-
- unless ( defined $cb ) {
- system $cmd;
- return 0;
- }
-
- if ( length $cmd == 1 ) {
- for my $key ( grep { exists $d{$_}{cmd} } keys %d ) {
- do { $cmd = $key; last } if $d{$key}{cmd} eq $cmd;
- }
- }
-
- }
- elsif ( $arg eq 'hotkeys' ) {
- $textdesc . "Hotkeys:\n" . (
- join "\n",
- map {
- "$_ - $d_by_short{$_}{help}"
-
- } grep {
- $d_by_short{$_}{mode} & 1 and exists $d_by_short{$_}{help};
-
- } sort { $d_by_short{$a}{menupos} <=> $d_by_short{$b}{menupos} }
- sort keys %d_by_short
- );
-
- }
- elsif ( $arg eq 'usage' ) {
- $textdesc . (
- join "\n",
- map {
- if ( $_ eq 'help' )
- {
- "--$_ - $d{$_}{help}";
- }
- else {
- "--$_ <ARG> - $d{$_}{help}";
- }
-
- } grep {
- $d{$_}{mode} & 2
- and exists $d{$_}{help}
-
- } sort { $d{$a}{menupos} <=> $d{$b}{menupos} } sort keys %d
- );
-
- }
- elsif ( $arg eq 'options' ) {
- map {
- "$_="
- . $d{$_}{type} => (
- defined $d{$_}{var}
- ? $d{$_}{var}
- : \$C{$_}
- );
-
- } grep {
- $d{$_}{mode} & 4 and exists $d{$_}{type};
-
- } sort keys %d;
- }
- };
-
- $d{configuration}{cb} = sub {
- Loadbars::Main::say sort map {
- "$_->[0] = $_->[1]"
-
- } grep {
- defined $_->[1]
-
- } map {
- [
- $_ => exists $d{$_}{var}
- ? ${ $d{$_}{var} }
- : $C{$_}
- ]
-
- } keys %d;
- };
-
- return ( \$hosts, $closure );
-}
-
-1;
diff --git a/lib/Loadbars/Main.pm b/lib/Loadbars/Main.pm
deleted file mode 100644
index 4b750dc..0000000
--- a/lib/Loadbars/Main.pm
+++ /dev/null
@@ -1,1092 +0,0 @@
-package Loadbars::Main;
-
-use strict;
-use warnings;
-use v5.14;
-use autodie;
-
-use SDL;
-use SDL::Event;
-use SDL::Events;
-use SDL::Rect;
-use SDL::Surface;
-use SDL::Video;
-use SDLx::App;
-
-use Time::HiRes qw(gettimeofday);
-
-use Proc::ProcessTable;
-
-use threads;
-use threads::shared;
-
-use Loadbars::Config;
-use Loadbars::Constants;
-use Loadbars::Shared;
-use Loadbars::Utils;
-
-use Carp;
-$SIG{__DIE__} = sub { Carp::confess(@_) };
-
-$| = 1;
-
-sub cpu_set_showcores_re () {
- $I{cpustring} = $C{showcores} ? 'cpu' : 'cpu ';
-}
-
-sub percentage ($$) {
- my ( $total, $part ) = @_;
-
- return int( null($part) / notnull( null($total) / 100 ) );
-}
-
-sub max_100 ($) {
- return $_[0] > 100 ? 100 : $_[0];
-}
-
-sub percentage_norm ($$$) {
- my ( $total, $part, $norm ) = @_;
-
- return int( null($part) / notnull( null($total) / 100 ) / notnull $norm);
-}
-
-sub norm ($) {
- my $n = shift;
-
- return $n > 100 ? 100 : ( $n < 0 ? 0 : $n );
-}
-
-sub cpu_parse_line ($) {
- my $line = shift;
- my ( $name, %load );
-
- # Modern kernels (2.6.33+) have 10 fields: user nice system idle iowait irq softirq steal guest guest_nice
- ( $name, @load{qw(user nice system idle iowait irq softirq steal guest guest_nice)} ) =
- split ' ', $line;
-
- # Not all kernels support these fields
- $load{steal} = 0 unless defined $load{steal};
- $load{guest} = 0 unless defined $load{guest};
- $load{guest_nice} = 0 unless defined $load{guest_nice};
-
- $load{TOTAL} =
- sum( @load{qw(user nice system idle iowait irq softirq steal guest guest_nice)} );
-
- return ( $name, \%load );
-}
-
-sub threads_terminate_pids (@) {
- my @threads = @_;
-
- display_info 'Terminating sub-processes, hasta la vista!';
- $_->kill('TERM') for @threads;
- display_info_no_nl 'Terminating PIDs';
- for my $pid ( keys %PIDS ) {
- my $proc_table = Proc::ProcessTable->new();
- for my $proc ( @{ $proc_table->table() } ) {
- if ( $proc->ppid == $pid ) {
- print $proc->pid . ' ';
- kill 'TERM', $proc->pid if $proc->ppid == $pid;
- }
- }
-
- print $pid . ' ';
- kill 'TERM', $pid;
-
- #$_->join() for @threads;
- }
-
- say '';
-
- display_info 'Terminating done. I\'ll be back!';
-}
-
-sub threads_stats ($;$) {
- my ( $host, $user ) = @_;
- $user = defined $user ? "-l $user" : '';
-
- my ( $sigusr1, $sigterm ) = ( 0, 0 );
- my $interval = Loadbars::Constants->INTERVAL;
-
- my $cpustring = $I{cpustring};
-
- # Precompile some regexp
- my @meminfo =
- map { [ $_, qr/^$_: *(\d+)/ ] }
- (qw(MemTotal MemFree Buffers Cached SwapTotal SwapFree));
-
- my $modeswitch_re = qr/^M /;
-
- # UGLY!
- my $remotecode = <<"REMOTECODE";
- perl -le '
- use strict;
- use Time::HiRes qw(usleep);
-
- my \\\$whitespace_re = qr/ +/;
- my \\\$usleep = $interval * 100000;
-
- sub cat {
- my \\\$file = shift;
- open FH, \\\$file;
- while (<FH>) {
- print;
- }
- close FH;
- }
-
- sub load {
- printf qq(M LOADAVG\n);
- open FH, qq(/proc/loadavg);
- printf qq(%s\n), join qq(;), (split qq( ), <FH>)[0..2];
- close FH;
- }
-
- sub mem {
- printf qq(M MEMSTATS\n);
- cat(qq(/proc/meminfo));
- }
-
- sub net {
- printf qq(M NETSTATS\n);
- open FH, qq(/proc/net/dev);
- <FH>; <FH>;
- while (<FH>) {
- next unless s/:/ /;
- my (\\\$foo, \\\$int, \\\$bytes, \\\$packets, \\\$errs, \\\$drop, \\\$fifo, \\\$frame, \\\$compressed, \\\$multicast, \\\$tbytes, \\\$tpackets, \\\$terrs, \\\$tdrop, \\\$tfifo, \\\$tcolls, \\\$tcarrier, \\\$tcompressed) = split \\\$whitespace_re, \\\$_;
- if (\\\$bytes || \\\$tbytes) {
- printf qq(%s:b=%s;tb=%s;p=%s;tp=%s e=%s;te=%s;d=%s;td=%s\n), \\\$int,
- \\\$bytes, \\\$tbytes,
- \\\$packets, \\\$tpackets,
- \\\$errs, \\\$terrs,
- \\\$drop, \\\$tdrop
- ;
- }
- }
- close FH;
- }
-
- for (1..10000) {
- load();
- mem();
- net();
-
- printf qq(M CPUSTATS\n);
- for (1..20) {
- cat(qq(/proc/stat));
- usleep(\\\$usleep);
- }
- }
- '
-REMOTECODE
-
- my $cmd =
- ( $host eq 'localhost' || $host eq '127.0.0.1' )
- ? "bash -c \"$remotecode\""
- : "ssh $user -o StrictHostKeyChecking=no $C{sshopts} $host \"$remotecode\"";
-
- my $pid = open my $pipe, "$cmd |" or do {
- say "Warning: $!";
- sleep 1;
- next;
- };
-
- $PIDS{$pid} = 1;
-
- # Toggle CPUs
- $SIG{USR1} = sub { $sigusr1 = 1 };
- $SIG{TERM} = sub { threads->exit(); };
-
- my $mode = 0;
-
- while (<$pipe>) {
- chomp;
-
- if ( $_ =~ $modeswitch_re ) {
- if ( $_ eq 'M CPUSTATS' ) {
- $mode = 1;
- }
- elsif ( $_ eq 'M MEMSTATS' ) {
- $mode = 2;
- }
- elsif ( $_ eq 'M NETSTATS' ) {
- $mode = 3;
- }
- elsif ( $_ eq 'M LOADAVG' ) {
- $mode = 0;
- }
- next;
- }
-
- if ( $mode == 0 ) {
- $AVGSTATS{$host} = $_;
- $AVGSTATS_HAS{$host} = 1;
- }
- elsif ( $mode == 1 ) {
- if ( 0 == index $_, $cpustring ) {
- my ( $name, $load ) = cpu_parse_line $_;
- $CPUSTATS{"$host;$name"} = join ';',
- map { $_ . '=' . $load->{$_} }
- grep { defined $load->{$_} } keys %$load;
- }
- }
- elsif ( $mode == 2 ) {
- for my $meminfo (@meminfo) {
- if ( $_ =~ $meminfo->[1] ) {
- $MEMSTATS{"$host;$meminfo->[0]"} = $1;
- $MEMSTATS_HAS{$host} = 1
- unless defined $MEMSTATS_HAS{$host};
- }
- }
- }
- elsif ( $mode == 3 ) {
- my ( $int, @stats ) = split ':', $_;
- $NETSTATS{"$host;$int"} = "@stats";
- $NETSTATS{"$host;$int;stamp"} = Time::HiRes::time();
- $NETSTATS_INT{$int} = 1 unless defined $NETSTATS_INT{$int};
- $NETSTATS_HAS{$host} = 1 unless defined $NETSTATS_HAS{$host};
- }
-
- if ($sigusr1) {
- $cpustring = $I{cpustring};
- $sigusr1 = 0;
-
- }
- }
-
- delete $PIDS{$pid};
-
- return undef;
-}
-
-sub sdl_get_rect ($$) {
- my ( $rects, $name ) = @_;
-
- return $rects->{$name} if exists $rects->{$name};
- return $rects->{$name} = SDL::Rect->new( 0, 0, 0, 0 );
-}
-
-sub cpu_normalize_loads ($) {
- my $cpu_loads_r = shift;
-
- return $cpu_loads_r unless exists $cpu_loads_r->{TOTAL};
-
- my $total = $cpu_loads_r->{TOTAL} == 0 ? 1 : $cpu_loads_r->{TOTAL};
- my %cpu_loads =
- map { $_ => $cpu_loads_r->{$_} / ( $total / 100 ) } keys %$cpu_loads_r;
- return \%cpu_loads;
-}
-
-sub cpu_parse ($) {
- my ($line_r) = shift;
-
- my %stat = map {
- my ( $k, $v ) = split '=';
- $k => $v
- } split ';', $$line_r;
-
- return \%stat;
-}
-
-sub net_link () {
- my $key = "bytes_$C{netlink}";
-
- my $linkspeed = do {
- if ( defined $I{$key} ) {
- $I{$key};
-
- }
- else {
- int $C{netlink} * $I{bytes_mbit};
- }
- };
-
- my $mbit = $linkspeed / $I{bytes_mbit};
-
- display_warn "$mbit mbit/s is no valid reference link speed"
- unless $mbit > 0;
-
- display_info "Setting reference linkspeed to $mbit mbit/s";
-
- return $linkspeed;
-}
-
-sub net_next_int ($;$) {
- my ( $num, $initial_device_flag ) = @_;
-
- return $C{netint} if defined $initial_device_flag && $C{netint} ne '';
-
- my $int = undef;
-
- for ( ; ; ) {
- my @ints = sort keys %NETSTATS_INT;
- $int = $ints[ int( $num % @ints ) ] if @ints;
-
- unless ( defined $int ) {
- sleep 0.1;
- next;
- }
-
- # On startup dont show a loopback device net interface
- if ( defined $initial_device_flag && $int =~ /^lo/ ) {
- $num++;
- sleep 0.1;
- next;
- }
-
- last;
- }
-
- return $int;
-}
-
-sub net_parse ($) {
- my ($line_r) = shift;
- my ( $a, $b ) = split ' ', $$line_r;
-
- my %a = map {
- my ( $k, $v ) = split '=', $_;
- $k => $v;
-
- } split ';', $a;
-
- my %b = map {
- my ( $k, $v ) = split '=', $_;
- $k => $v;
-
- } split ';', $b;
-
- return [ \%a, \%b ];
-}
-
-sub net_diff ($$) {
- my ( $a_r, $b_r ) = @_;
- my %diff = map { $_ => ( $a_r->{$_} - $b_r->{$_} ) } keys %$a_r;
-
- return \%diff;
-}
-
-sub sdl_fill_rect {
- my ( $app, $rect, $color ) = @_;
-
- my $mapped_color = SDL::Video::map_RGB( $app->format(), @$color );
- SDL::Video::fill_rect( $app, $rect, $mapped_color );
-
- return undef;
-}
-
-sub sdl_draw_background ($$) {
- my ( $app, $rects ) = @_;
- my $rect = sdl_get_rect $rects, 'background';
-
- $rect->w( $C{width} );
- $rect->h( $C{height} );
- sdl_fill_rect( $app, $rect, Loadbars::Constants->BLACK );
-
- return undef;
-}
-
-sub threads_create (@) {
- return map { $_->detach(); $_ }
- map { threads->create( 'threads_stats', split ':' ) } @_;
-}
-
-sub set_dimensions ($$) {
- my ( $width, $height ) = @_;
- my $display_info = 0;
-
- if ( $width < 1 ) {
- $C{width} = 1 if $C{width} != 1;
-
- }
- elsif ( $width > $C{maxwidth} ) {
- $C{width} = $C{maxwidth} if $C{width} != $C{maxwidth};
-
- }
- elsif ( $C{width} != $width ) {
- $C{width} = $width;
- }
-
- if ( $height < 1 ) {
- $C{height} = 1 if $C{height} != 1;
-
- }
- elsif ( $C{height} != $height ) {
- $C{height} = $height;
- }
-}
-
-sub loop ($@) {
- my ( $dispatch, @threads ) = @_;
-
- my $num_stats = 1;
- $C{width} = $C{barwidth};
-
- my $title = do {
- if ( defined $C{title} ) {
- $C{title};
- }
- else {
- 'Loadbars ' . get_version . ' (press h for help on stdout)';
- }
- };
-
- my $app = SDLx::App->new(
- title => $title,
- icon_title => Loadbars::Constants->VERSION,
- width => $C{width},
- height => $C{height},
- depth => Loadbars::Constants->COLOR_DEPTH,
- resizeable => 1,
- );
-
- my $rects = {};
- my %cpu_history;
- my %cpu_max;
-
- my %net_history;
- my %net_history_stamps;
- my %net_last_value;
- my $net_int_number = 0;
- my $net_int = net_next_int $net_int_number, 1;
-
- my $net_max_bytes = net_link;
-
- my $sdl_redraw_background = 0;
- my $sdl_font_height = 14;
-
- my $infotxt : shared = '';
- my $quit : shared = 0;
- my $resize_window : shared = 0;
- my %newsize : shared;
- my $event = SDL::Event->new();
-
- my ( $t1, $t2 ) = ( Time::HiRes::time(), undef );
-
- # Closure for event handling
- my $event_handler = sub {
-
- # While there are events to poll, poll them all!
- while ( SDL::Events::poll_event($event) ) {
-
- # Videoresize
- if ( $event->type() == 16 ) {
- $newsize{width} = $event->resize_w;
- $newsize{height} = $event->resize_h;
- $resize_window = 1;
- }
-
- # Not a key
- next if $event->type() != 2;
- my $key_sym = $event->key_sym();
-
- if ( $key_sym == 49 ) {
-
- # 1 pressed
- $C{showcores} = !$C{showcores};
- cpu_set_showcores_re;
- $_->kill('USR1') for @threads;
- $sdl_redraw_background = 1;
- display_info "Toggled CPUs $C{showcores}";
-
- }
- elsif ( $key_sym == 50 ) {
-
- # 2 pressed
- $C{showmem} = !$C{showmem};
- display_info "Toggled show mem";
-
- }
- elsif ( $key_sym == 51 ) {
-
- # 3 pressed
- $C{shownet} = !$C{shownet};
- display_info "Toggled show net $C{shownet}";
- display_info "Net interface speed reference is "
- . ( $net_max_bytes / $I{bytes_mbit} )
- . "mbit/s. Press f/v to scale"
- if $C{shownet};
- }
-
- elsif ( $key_sym == 101 ) {
-
- # e pressed
- $C{extended} = !$C{extended};
- $sdl_redraw_background = 1;
- display_info "Toggled extended display $C{extended}";
-
- }
- elsif ( $key_sym == 104 ) {
-
- # h pressed
- say '=> Hotkeys to use in the SDL interface';
- say $dispatch->('hotkeys');
- display_info 'Hotkeys help printed on terminal stdout';
-
- }
- elsif ( $key_sym == 109 ) {
-
- # m pressed
- display_warn
-"Toggled show mem hotkey m is deprecated. Press 2 hotkey instead";
-
- }
- elsif ( $key_sym == 110 ) {
-
- # n pressed
- if ( $C{shownet} ) {
- $net_int = net_next_int ++$net_int_number;
- $sdl_redraw_background = 1;
- display_info "Using net interface which is $net_int";
- }
- else {
- display_warn
-"Net stats are not activated. Press 3 hotkey to activate first";
- }
-
- }
- elsif ( $key_sym == 113 ) {
-
- # q pressed
- threads_terminate_pids @threads;
- $quit = 1;
- return;
-
- }
- elsif ( $key_sym == 119 ) {
-
- # w pressed
- Loadbars::Config::write;
-
- }
- elsif ( $key_sym == 97 ) {
-
- # a pressed
- ++$C{cpuaverage};
- display_info "Set sample cpu average $C{cpuaverage}";
- }
- elsif ( $key_sym == 121 or $key_sym == 122 ) {
-
- # y or z pressed
- my $avg = $C{cpuaverage};
- --$avg;
- $C{cpuaverage} = $avg > 1 ? $avg : 2;
- display_info "Set sample cpu average $C{cpuaverage}";
-
- }
- elsif ( $key_sym == 100 ) {
-
- # d pressed
- ++$C{netaverage};
- display_info "Set sample net average $C{netaverage}";
- }
- elsif ( $key_sym == 99 ) {
-
- # c pressed
- my $avg = $C{netaverage};
- --$avg;
- $C{netaverage} = $avg > 1 ? $avg : 2;
- display_info "Set sample net average $C{netaverage}";
-
- }
- elsif ( $key_sym == 102 ) {
-
- # f pressed
- $net_max_bytes *= 10;
- display_info "Set net interface speed reference to "
- . ( $net_max_bytes / $I{bytes_mbit} )
- . 'mbit/s';
- }
- elsif ( $key_sym == 118 ) {
-
- # v pressed
- $net_max_bytes = int( $net_max_bytes / 10 );
- $net_max_bytes = $I{bytes_mbit}
- if $net_max_bytes < $I{bytes_mbit};
- display_info "Set net interface speed reference to "
- . int( $net_max_bytes / $I{bytes_mbit} )
- . 'mbit/s';
-
- }
- elsif ( $key_sym == 276 ) {
-
- # left pressed
- $newsize{width} = $C{width} - 100;
- $newsize{height} = $C{height};
- $resize_window = 1;
- }
- elsif ( $key_sym == 275 ) {
-
- # right pressed
- $newsize{width} = $C{width} + 100;
- $newsize{height} = $C{height};
- $resize_window = 1;
-
- }
- elsif ( $key_sym == 273 ) {
-
- # up pressed
- $newsize{width} = $C{width};
- $newsize{height} = $C{height} - 100;
- $resize_window = 1;
- }
- elsif ( $key_sym == 274 ) {
-
- # down pressed
- $newsize{width} = $C{width};
- $newsize{height} = $C{height} + 100;
- $resize_window = 1;
- }
- }
- };
-
- do {
- my ( $x, $y ) = ( 0, 0 );
-
- # Also substract 1 (each bar is followed by an 1px separator bar)
- my $width = $C{width} / notnull($num_stats) - 1;
-
- my ( $current_barnum, $current_corenum ) = ( -1, -1 );
-
- for my $key ( sort keys %CPUSTATS ) {
- last if ( ++$current_barnum > $num_stats );
- ++$current_corenum;
- my ( $host, $name ) = split ';', $key;
-
- next unless defined $CPUSTATS{$key};
-
- $cpu_history{$key} = [ cpu_parse \$CPUSTATS{$key} ]
- unless exists $cpu_history{$key} && exists $CPUSTATS{$key};
-
- my $now_stat_r = cpu_parse \$CPUSTATS{$key};
- my $prev_stat_r = $cpu_history{$key}[0];
-
- push @{ $cpu_history{$key} }, $now_stat_r;
- shift @{ $cpu_history{$key} }
- while $C{cpuaverage} < @{ $cpu_history{$key} };
-
- my %cpu_loads =
- null $now_stat_r->{TOTAL} == null $prev_stat_r->{TOTAL}
- ? %$now_stat_r
- : map { $_ => $now_stat_r->{$_} - $prev_stat_r->{$_} }
- keys %$now_stat_r;
-
- my $cpu_loads_r = cpu_normalize_loads \%cpu_loads;
-
- my %heights = map {
- $_ => defined $cpu_loads_r->{$_}
- ? $cpu_loads_r->{$_} * ( $C{height} / 100 )
- : 1
- } keys %$cpu_loads_r;
-
- push @{ $cpu_max{$key} }, $cpu_loads_r;
- shift @{ $cpu_max{$key} }
- while $C{cpuaverage} < @{ $cpu_max{$key} };
-
- my $is_host_summary = $name eq 'cpu' ? 1 : 0;
-
- my $rect_separator = undef;
-
- my $rect_idle = sdl_get_rect $rects, "$key;idle";
- my $rect_steal = sdl_get_rect $rects, "$key;steal";
- my $rect_guest = sdl_get_rect $rects, "$key;guest";
- my $rect_irq = sdl_get_rect $rects, "$key;irq";
- my $rect_softirq = sdl_get_rect $rects, "$key;softirq";
- my $rect_nice = sdl_get_rect $rects, "$key;nice";
- my $rect_iowait = sdl_get_rect $rects, "$key;iowait";
- my $rect_user = sdl_get_rect $rects, "$key;user";
- my $rect_system = sdl_get_rect $rects, "$key;system";
-
- my $rect_peak;
-
- $y = $C{height} - $heights{system};
- $rect_system->w($width);
- $rect_system->h( $heights{system} );
- $rect_system->x($x);
- $rect_system->y($y);
-
- $y -= $heights{user};
- $rect_user->w($width);
- $rect_user->h( $heights{user} );
- $rect_user->x($x);
- $rect_user->y($y);
-
- $y -= $heights{nice};
- $rect_nice->w($width);
- $rect_nice->h( $heights{nice} );
- $rect_nice->x($x);
- $rect_nice->y($y);
-
- $y -= $heights{idle};
- $rect_idle->w($width);
- $rect_idle->h( $heights{idle} );
- $rect_idle->x($x);
- $rect_idle->y($y);
-
- $y -= $heights{iowait};
- $rect_iowait->w($width);
- $rect_iowait->h( $heights{iowait} );
- $rect_iowait->x($x);
- $rect_iowait->y($y);
-
- $y -= $heights{irq};
- $rect_irq->w($width);
- $rect_irq->h( $heights{irq} );
- $rect_irq->x($x);
- $rect_irq->y($y);
-
- $y -= $heights{softirq};
- $rect_softirq->w($width);
- $rect_softirq->h( $heights{softirq} );
- $rect_softirq->x($x);
- $rect_softirq->y($y);
-
- $y -= $heights{guest};
- $rect_guest->w($width);
- $rect_guest->h( $heights{guest} );
- $rect_guest->x($x);
- $rect_guest->y($y);
-
- $y -= $heights{steal};
- $rect_steal->w($width);
- $rect_steal->h( $heights{steal} );
- $rect_steal->x($x);
- $rect_steal->y($y);
-
- my $all = 100 - $cpu_loads_r->{idle};
- my $max_all = 0;
-
- sdl_fill_rect( $app, $rect_idle, Loadbars::Constants->BLACK );
- sdl_fill_rect( $app, $rect_steal, Loadbars::Constants->RED );
- sdl_fill_rect( $app, $rect_guest, Loadbars::Constants->RED );
- sdl_fill_rect( $app, $rect_irq, Loadbars::Constants->WHITE );
- sdl_fill_rect( $app, $rect_softirq, Loadbars::Constants->WHITE );
- sdl_fill_rect( $app, $rect_nice, Loadbars::Constants->GREEN );
- sdl_fill_rect( $app, $rect_iowait, Loadbars::Constants->PURPLE );
-
- my $rect_memused = sdl_get_rect $rects, "$host;memused";
- my $rect_memfree = sdl_get_rect $rects, "$host;memfree";
-
- #my $rect_buffers = sdl_get_rect $rects, "$host;buffers";
- #my $rect_cached = sdl_get_rect $rects, "$host;cached";
- my $rect_swapused = sdl_get_rect $rects, "$host;swapused";
- my $rect_swapfree = sdl_get_rect $rects, "$host;swapfree";
-
- my $rect_netused = sdl_get_rect $rects, "$host;netused";
- my $rect_netfree = sdl_get_rect $rects, "$host;netfree";
-
- my $rect_tnetused = sdl_get_rect $rects, "$host;tnetused";
- my $rect_tnetfree = sdl_get_rect $rects, "$host;tnetfree";
-
- my $add_x = 0;
- my $half_width = $width / 2;
-
- my %meminfo;
- if ($is_host_summary) {
- if ( $C{showmem} ) {
- $add_x += $width + 1;
-
- my $ram_per = percentage $MEMSTATS{"$host;MemTotal"},
- $MEMSTATS{"$host;MemFree"};
- my $swap_per = percentage $MEMSTATS{"$host;SwapTotal"},
- $MEMSTATS{"$host;SwapFree"};
-
- %meminfo = (
- ram_per => $ram_per,
- swap_per => $swap_per,
- );
-
- my %heights = (
- MemFree => $ram_per * ( $C{height} / 100 ),
- MemUsed => ( 100 - $ram_per ) * ( $C{height} / 100 ),
- SwapFree => $swap_per * ( $C{height} / 100 ),
- SwapUsed => ( 100 - $swap_per ) * ( $C{height} / 100 ),
- );
-
- $y = $C{height} - $heights{MemUsed};
- $rect_memused->w($half_width);
- $rect_memused->h( $heights{MemUsed} );
- $rect_memused->x( $x + $add_x );
- $rect_memused->y($y);
-
- $y -= $heights{MemFree};
- $rect_memfree->w($half_width);
- $rect_memfree->h( $heights{MemFree} );
- $rect_memfree->x( $x + $add_x );
- $rect_memfree->y($y);
-
- $y = $C{height} - $heights{SwapUsed};
- $rect_swapused->w($half_width);
- $rect_swapused->h( $heights{SwapUsed} );
- $rect_swapused->x( $x + $add_x + $half_width );
- $rect_swapused->y($y);
-
- $y -= $heights{SwapFree};
- $rect_swapfree->w($half_width);
- $rect_swapfree->h( $heights{SwapFree} );
- $rect_swapfree->x( $x + $add_x + $half_width );
- $rect_swapfree->y($y);
-
- sdl_fill_rect( $app, $rect_memused,
- Loadbars::Constants->DARK_GREY );
- sdl_fill_rect( $app, $rect_memfree,
- Loadbars::Constants->BLACK );
-
- sdl_fill_rect( $app, $rect_swapused,
- Loadbars::Constants->GREY );
- sdl_fill_rect( $app, $rect_swapfree,
- Loadbars::Constants->BLACK );
- }
-
- if ( $C{shownet} && exists $NETSTATS_HAS{$host} ) {
- $add_x += $width + 1;
-
- my $key = "$host;$net_int";
- my %heights;
-
- if ( exists $NETSTATS{$key} ) {
-
- unless ( exists $net_history{$key} ) {
- $net_history{$key} = [ net_parse \$NETSTATS{$key} ];
- $net_history_stamps{$key} =
- [ $NETSTATS{"$key;stamp"} ];
- }
-
- my $now_stat_stamp = $NETSTATS{"$key;stamp"};
- my $now_stat_r = net_parse \$NETSTATS{$key};
-
- my $prev_stat_stamp = $net_history_stamps{$key}[0];
-
- my $net_factor = $net_max_bytes *
- ( $now_stat_stamp - $prev_stat_stamp );
-
- push @{ $net_history_stamps{$key} }, $now_stat_stamp;
- shift @{ $net_history_stamps{$key} }
- while $C{netaverage} < @{ $net_history_stamps{$key} };
-
- my $prev_stat_r = $net_history{$key}[0];
-
- push @{ $net_history{$key} }, $now_stat_r;
- shift @{ $net_history{$key} }
- while $C{netaverage} < @{ $net_history{$key} };
-
- my $diff_stat_r = net_diff $now_stat_r->[0],
- $prev_stat_r->[0];
-
- my $net_per =
- percentage( $net_factor, $diff_stat_r->{b} );
- my $tnet_per =
- percentage( $net_factor, $diff_stat_r->{tb} );
-
- if ( $net_per < 0 ) {
- $net_per = $net_last_value{"$key;per"};
- }
- else {
- $net_last_value{"$key;per"} = $net_per;
- }
-
- if ( $tnet_per < 0 ) {
- $tnet_per = $net_last_value{"$key;tper"};
- }
- else {
- $net_last_value{"$key;tper"} = $tnet_per;
- }
-
- my $net_per_100 = max_100 $net_per;
- my $tnet_per_100 = max_100 $tnet_per;
-
- %heights = (
- NetUsed => $net_per_100 * ( $C{height} / 100 ),
- NetFree => ( 100 - $net_per_100 ) *
- ( $C{height} / 100 ),
- TNetFree => $tnet_per_100 * ( $C{height} / 100 ),
- TNetUsed => ( 100 - $tnet_per_100 ) *
- ( $C{height} / 100 ),
- );
-
- $y = $C{height} - $heights{NetFree};
- $rect_netused->w($half_width);
- $rect_netused->h( $heights{NetFree} );
- $rect_netused->x( $x + $add_x );
- $rect_netused->y($y);
-
- $y -= $heights{NetUsed};
- $rect_netfree->w($half_width);
- $rect_netfree->h( $heights{NetUsed} );
- $rect_netfree->x( $x + $add_x );
- $rect_netfree->y($y);
-
- $y = $C{height} - $heights{TNetFree};
- $rect_tnetused->w($half_width);
- $rect_tnetused->h( $heights{TNetFree} );
- $rect_tnetused->x( $x + $add_x + $half_width );
- $rect_tnetused->y($y);
-
- $y -= $heights{TNetUsed};
- $rect_tnetfree->w($half_width);
- $rect_tnetfree->h( $heights{TNetUsed} );
- $rect_tnetfree->x( $x + $add_x + $half_width );
- $rect_tnetfree->y($y);
-
- sdl_fill_rect( $app, $rect_netused,
- Loadbars::Constants->BLACK );
- sdl_fill_rect( $app, $rect_netfree,
- $net_per > 100
- ? Loadbars::Constants->GREEN
- : Loadbars::Constants->LIGHT_GREEN );
-
- sdl_fill_rect( $app, $rect_tnetused,
- $tnet_per > 100
- ? Loadbars::Constants->GREEN
- : Loadbars::Constants->LIGHT_GREEN );
- sdl_fill_rect( $app, $rect_tnetfree,
- Loadbars::Constants->BLACK );
-
- # No netstats available for this host;device pair.
- }
- else {
- $rect_netused->w($width);
- $rect_netused->h( $C{height} );
- $rect_netused->x( $x + $add_x );
- $rect_netused->y($y);
-
- sdl_fill_rect( $app, $rect_netused,
- Loadbars::Constants->RED );
- sdl_fill_rect( $app, $rect_tnetused,
- Loadbars::Constants->RED );
- sdl_fill_rect( $app, $rect_netfree,
- Loadbars::Constants->RED );
- sdl_fill_rect( $app, $rect_tnetfree,
- Loadbars::Constants->RED );
- }
-
- }
-
- if ( $C{showcores} ) {
- $current_corenum = 0;
- $rect_separator = sdl_get_rect $rects, "$key;separator";
- $rect_separator->w(1);
- $rect_separator->h( $C{height} );
- $rect_separator->x( $x - 1 );
- $rect_separator->y(0);
- sdl_fill_rect( $app, $rect_separator,
- Loadbars::Constants->GREY );
- }
- }
-
- if ( $C{extended} ) {
- my $max_val = 0;
-
- for ( @{ $cpu_max{$key} } ) {
- my $new_val = sum @{$_}{qw{system user}};
- $max_val = $new_val if $max_val < $new_val;
- }
-
- my $maxheight = $max_val * ( $C{height} / 100 );
-
- $rect_peak = sdl_get_rect $rects, "$key;max";
- $rect_peak->w($width);
- $rect_peak->h(1);
- $rect_peak->x($x);
- $rect_peak->y( $C{height} - $maxheight );
-
- sdl_fill_rect(
- $app,
- $rect_peak,
- $max_val > Loadbars::Constants->USER_ORANGE
- ? Loadbars::Constants->ORANGE
- : (
- $max_val > Loadbars::Constants->USER_YELLOW0
- ? Loadbars::Constants->YELLOW0
- : ( Loadbars::Constants->YELLOW )
- )
- );
- }
-
- sdl_fill_rect(
- $app,
- $rect_user,
- $all > Loadbars::Constants->USER_ORANGE
- ? Loadbars::Constants->ORANGE
- : (
- $all > Loadbars::Constants->USER_YELLOW0
- ? Loadbars::Constants->YELLOW0
- : ( Loadbars::Constants->YELLOW )
- )
- );
- sdl_fill_rect( $app, $rect_system,
- $cpu_loads_r->{system} > Loadbars::Constants->SYSTEM_BLUE0
- ? Loadbars::Constants->BLUE0
- : Loadbars::Constants->BLUE );
-
- my $y = 5;
-
- my @loadavg = do {
- if ( defined $AVGSTATS_HAS{$host} ) {
- split ';', $AVGSTATS{$host};
- }
- else {
- ( undef, undef, undef );
- }
- };
-
- $app->sync();
- $x += $width + 1 + $add_x;
- }
-
- TIMEKEEPER:
- $t2 = Time::HiRes::time();
- my $t_diff = $t2 - $t1;
-
- if ( Loadbars::Constants->INTERVAL_SDL > $t_diff ) {
- SDL::delay(10);
-
- # Goto is OK as long you don't produce spaghetti code
- goto TIMEKEEPER;
-
- }
- elsif ( Loadbars::Constants->INTERVAL_SDL_WARN < $t_diff ) {
- display_warn
-"WARN: Loop is behind $t_diff seconds, your computer may be too slow";
- }
-
- $t1 = $t2;
- $event_handler->();
-
- my $new_num_stats = keys %CPUSTATS;
- $new_num_stats += keys %MEMSTATS_HAS if $C{showmem};
- $new_num_stats += keys %NETSTATS_HAS if $C{shownet};
-
- if ( $new_num_stats != $num_stats ) {
- %cpu_history = ();
- %net_history = ();
-
- $num_stats = $new_num_stats;
- $newsize{width} = $C{barwidth} * $num_stats;
- $newsize{height} = $C{height};
- $resize_window = 1;
- }
-
- if ($resize_window) {
- set_dimensions $newsize{width}, $newsize{height};
- $app->resize( $C{width}, $C{height} );
- $resize_window = 0;
- $sdl_redraw_background = 1;
- }
-
- if ($sdl_redraw_background) {
- sdl_draw_background $app, $rects;
- $sdl_redraw_background = 0;
- %AVGSTATS = ();
- %AVGSTATS_HAS = ();
- %CPUSTATS = ();
- }
-
- } until $quit;
-
- say "Good bye";
-
- exit Loadbars::Constants->SUCCESS;
-}
-
-1;
diff --git a/lib/Loadbars/Shared.pm b/lib/Loadbars/Shared.pm
deleted file mode 100644
index 1cf6e80..0000000
--- a/lib/Loadbars/Shared.pm
+++ /dev/null
@@ -1,67 +0,0 @@
-package Loadbars::Shared;
-
-use Exporter;
-
-use base 'Exporter';
-
-our @EXPORT = qw(
- %PIDS
- %CPUSTATS
- %NETSTATS_LASTUPDATE
- %AVGSTATS
- %AVGSTATS_HAS
- %MEMSTATS
- %MEMSTATS_HAS
- %NETSTATS
- %NETSTATS_HAS
- %NETSTATS_INT
- %C
- %I
-);
-
-our %PIDS : shared;
-
-our %CPUSTATS : shared;
-our %AVGSTATS : shared;
-our %AVGSTATS_HAS : shared;
-
-our %MEMSTATS : shared;
-our %MEMSTATS_HAS : shared;
-
-our %NETSTATS : shared;
-our %NETSTATS_HAS : shared;
-our %NETSTATS_INT : shared;
-
-# Global configuration hash
-our %C : shared;
-
-# Global configuration hash for internal settings (not configurable)
-our %I : shared;
-
-# Setting defaults
-%C = (
- title => undef,
- barwidth => 20,
- cpuaverage => 10,
- extended => 0,
- hasagent => 0,
- height => 150,
- maxwidth => 1900,
- netaverage => 15,
- netint => '',
- netlink => 'gbit',
- showcores => 0,
- showmem => 0,
- shownet => 0,
- sshopts => '',
-);
-
-%I = (
- cpustring => 'cpu',
- bytes_mbit => 125000,
- bytes_10mbit => 1250000,
- bytes_100mbit => 12500000,
- bytes_gbit => 125000000,
- bytes_10gbit => 1250000000,
-);
-
diff --git a/lib/Loadbars/Utils.pm b/lib/Loadbars/Utils.pm
deleted file mode 100644
index 56b829d..0000000
--- a/lib/Loadbars/Utils.pm
+++ /dev/null
@@ -1,61 +0,0 @@
-package Loadbars::Utils;
-
-use strict;
-use warnings;
-
-use Exporter;
-
-use base 'Exporter';
-
-our @EXPORT = qw (
- debugsay
- display_info
- display_info_no_nl
- display_warn
- error
- get_version
- newline
- notnull
- null
- say
- sum
- trim
-);
-
-sub say (@) { print "$_\n" for @_; return undef }
-sub newline () { say ''; return undef }
-sub debugsay (@) { say "Loadbars::DEBUG: $_" for @_; return undef }
-sub sum (@) { my $sum = 0; $sum += $_ // 0 for @_; return $sum }
-sub null ($) { defined $_[0] ? $_[0] : 0 }
-sub notnull ($) { $_[0] != 0 ? $_[0] : 1 }
-sub error ($) { die shift, "\n" }
-
-sub trim (\$) {
- my $str = shift;
- $$str =~ s/^[\s\t]+//;
- $$str =~ s/[\s\t]+$//;
- return undef;
-}
-sub display_info_no_nl ($) { print "==> " . (shift) . ' ' }
-sub display_info ($) { say "==> " . shift }
-sub display_warn ($) { say "!!! " . shift }
-
-sub get_version () {
- my $versionfile = do {
- if ( -f '.version' ) {
- '.version';
- }
- else {
- '/usr/share/loadbars/version';
- }
- };
-
- open my $fh, $versionfile or error("$!: $versionfile");
- my $version = <$fh>;
- close $fh;
-
- chomp $version;
- return $version;
-}
-
-1;