aboutsummaryrefslogtreecommitdiff
path: root/capibarra
diff options
context:
space:
mode:
Diffstat (limited to 'capibarra')
-rwxr-xr-xcapibarra39
1 files changed, 27 insertions, 12 deletions
diff --git a/capibarra b/capibarra
index 413a0c7..5a3c969 100755
--- a/capibarra
+++ b/capibarra
@@ -63,8 +63,7 @@ $linux_mods{'CPU'} = {
open(my $loadf, '<', '/proc/loadavg');
return { state => $loadf };
},
- compute => sub {
- my $loadf = shift;
+ compute => sub($loadf) {
read($loadf, my $loads, 14);
seek($loadf, 0, 0);
my @loads = split ' ', $loads;
@@ -119,8 +118,7 @@ $linux_mods{'BAT'} = {
open(my $bstatf, '<', "$BATDIR/status");
return { state => [$bcapf, $bstatf] };
},
- compute => sub {
- my $state = shift;
+ compute => sub($state) {
my ($bcapf, $bstatf) = @$state;
my $batlevel = <$bcapf>;
chomp $batlevel;
@@ -155,13 +153,19 @@ my %openbsd_mods;
$openbsd_mods{'CPU'} = {
period => 5,
- compute => sub {
+ init => sub($args) {
+ my $warn5 = $args->{warn5} || 1;
+ my $err5 = $args->{err5} || 3;
+ return { state => [$warn5, $err5] };
+ },
+ compute => sub($state) {
my $loads = `sysctl -n vm.loadavg`;
chomp $loads;
my @loads = split ' ', $loads;
return {
text => sprintf ("CPU %s/%s/%s", @loads),
- color => color_thresholds($loads[1], 1, 3),
+ color => color_thresholds($loads[1], @$state[0], @$state[1]),
+ state => $state,
};
}
};
@@ -232,14 +236,20 @@ sub obsd_get_sysctl($mib) {
}
$openbsd_mods{'BAT'} = {
period => 3,
- compute => sub {
+ init => sub($args) {
+ my $warn = $args->{warn} || 30;
+ my $err = $args->{err} || 10;
+ return { state => [$warn, $err] };
+ },
+ compute => sub($state) {
my $batcharging = obsd_get_sysctl('hw.sensors.acpibat0.raw0') eq "0" ? '⚡' : '';
my $batmax = obsd_get_sysctl('hw.sensors.acpibat0.watthour0');
my $batcur = obsd_get_sysctl('hw.sensors.acpibat0.watthour3');
my $batlevel = 100 * $batcur / $batmax;
return {
text => sprintf("🔋%d%%%s", $batlevel, $batcharging),
- color => color_thresholds(100 - $batlevel, 70, 90)
+ color => color_thresholds(100-$batlevel, 100-@$state[0], 100-@$state[1]),
+ state => $state,
};
}
};
@@ -282,12 +292,13 @@ my $OS = `uname -s`;
chomp $OS;
my %os_mods = ( %{$MODS{$OS}}, %{$MODS{'_common'}} );
-my @mods = ('CPU', 'MEM', 'NET', 'BAT', 'AUDIO', 'DATE');
+# my @mods = ('CPU', 'MEM', 'NET', 'BAT', 'AUDIO', 'DATE');
+my @mods = @ARGV;
my %cache;
sub render_section($result) {
my $color = $result->{color};
- my $color = $color ? ",\"$color->{type}\":\"$color->{val}\"" : '';
+ $color = $color ? ",\"$color->{type}\":\"$color->{val}\"" : '';
return sprintf "{\"full_text\":\"%s\",\"separator\":false$color}", $result->{text};
}
@@ -303,9 +314,13 @@ foreach my $arg (@ARGV) {
printf("{ \"version\": 1 }\n[\n");
# Call each module's init subroutine
-foreach my $modname (@mods) {
+# Remove args from @mods
+foreach my $modspec (@mods) {
+ my ($modname, @modargs) = split ',', $modspec;
my $mod = $os_mods{$modname};
- $cache{$modname} = &{$mod->{init}} if $mod->{init};
+ my %args = (map { split '=', $_ } @modargs);
+ $cache{$modname} = &{$mod->{init}}(\%args) if $mod->{init};
+ $modspec = $modname;
}
my $counter = 0;