diff options
author | Guillermo Ramos | 2025-09-18 00:00:03 +0200 |
---|---|---|
committer | Guillermo Ramos | 2025-09-18 01:18:15 +0200 |
commit | e776589416f62cba277f177ecb77e91b1b50551a (patch) | |
tree | 1f4d2de81b699ccd61a21b395ce351d94b97603d | |
parent | 31453b952acd042f7c8bafa246b45ec90de667a5 (diff) | |
download | cli-master.tar.gz |
-rwxr-xr-x | capibarra | 39 |
1 files changed, 27 insertions, 12 deletions
@@ -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; |