From 7d4e8dccb44e221aa6bc1ce5296eddabdf8b45ec Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 21 Feb 2021 17:56:26 +0300 Subject: [PATCH] i3status-anyevent: Add simple net if state indicator --- i3status-anyevent | 36 +++++++++++++++++++++++++++++++++++- i3status-anyevent.json | 19 ++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/i3status-anyevent b/i3status-anyevent index d6187b6..b8877bf 100644 --- a/i3status-anyevent +++ b/i3status-anyevent @@ -68,7 +68,8 @@ my $charge = ''; my $tcp_check = 0; my $file_check = 0; my $file_check_mtime = 0; -my $simple_volume_pa = '??'; +my $simple_volume_pa = '♪ ??%'; +my $interfaces = '??'; my $output_string; my $old_output_string = ''; my $STDIN_FIRST_LINE_DROPPED = 0; @@ -215,6 +216,10 @@ sub add_events () { push @{$OUTPUT}, { color => $CONF->{color}, full_text => $vpn_str }; } + if ($CONF->{'net-if'}->{enabled}) { + push @{$OUTPUT}, { color => $CONF->{color}, full_text => $interfaces, markup => 'pango' }; + } + if ($CONF->{battery}->{enabled}) { push @{$OUTPUT}, { color => $CONF->{color}, full_text => $charge, markup => 'pango' }; } @@ -618,6 +623,35 @@ sub add_events () { ); } + # poll operstate for given net ifs + if ($CONF->{'net-if'}->{enabled}) { + push @EP, AnyEvent->timer ( + after => 0, # first invoke ASAP + interval => 1, # then invoke every 1 second + cb => sub { # the callback to invoke + my @ifstate; + + foreach my $if (@{$CONF->{'net-if'}->{if}}) { + if (open my $STATEFH, '<', "$if->{dir}/operstate") { + my $state = <$STATEFH>; + close $STATEFH; + chomp $state; + + if ($state eq 'up') { + push @ifstate, sprintf '%s:▲', $if->{name}, $CONF->{'net-if'}->{up_color}; + } else { + push @ifstate, sprintf '%s:▼', $if->{name}, $CONF->{'net-if'}->{down_color}; + } + } + } + + if ($#ifstate >=0 ) { + $interfaces = join ' ', @ifstate; + } + } + ); + } + return; } diff --git a/i3status-anyevent.json b/i3status-anyevent.json index fefcf4e..198789e 100644 --- a/i3status-anyevent.json +++ b/i3status-anyevent.json @@ -51,7 +51,7 @@ "tcp_check" : { "enabled": 0, "host": "somehost.tld", - "port": "443", + "port": 443, "timeout" : 3 } }, @@ -61,6 +61,23 @@ # so it's not light on system resources as i'd like "simple-volume-pa": 0, +"net-if" : { + "enabled" : 0, +# html (actually, pango) notation + "down_color" : "red", + "up_color" : "green", + "if" : [ + { + "name" : "eth0", + "dir" : "/sys/class/net/eth0" + }, + { + "name" : "wlan0", + "dir" : "/sys/class/net/wlan0" + } + ] +}, + # Weather to display Application Buttons "app_buttons": 1,