diff --git a/config/i3blocks/config b/config/i3blocks/config index 69be16f..958aacd 100644 --- a/config/i3blocks/config +++ b/config/i3blocks/config @@ -83,7 +83,7 @@ signal=12 [sharp-wifi] command=/home/sharparam/.dotfiles/i3blocks/sharp-wifi.rb label= -instance=wlp4s0 +instance=wlp4s0,enp0s31f6,enp0s20f0u2 interval=10 # Memory usage diff --git a/i3blocks/sharp-wifi.rb b/i3blocks/sharp-wifi.rb index 5996613..4af7a2b 100755 --- a/i3blocks/sharp-wifi.rb +++ b/i3blocks/sharp-wifi.rb @@ -12,24 +12,57 @@ def color(percent) end end -interface = ENV['BLOCK_INSTANCE'] || 'wlp4s0' - -has_addr = `ip addr show #{interface}` =~ /inet6? ([^\/]+)\// +def get_addr(interface) + has_addr = `ip -color=never addr show #{interface}` =~ /inet6? ([^\/]+)\// + has_addr ? $1 : nil +end -exit unless has_addr +def get_wifi_data(interface) + conf = `iwconfig #{interface} 2>/dev/null` + has_ssid = conf =~ /ESSID:"(.+)"\s*$/ + if has_ssid + ssid = $1 + quality, max_quality = conf.match(/Link Quality=(\d+)\/(\d+)/).to_a[1..2].map(&:to_f) + strength = ((quality / max_quality) * 100).round + { + ssid: ssid, + strength: strength + } + else + { + ssid: interface, + strength: nil + } + end +end -address = $1 +def get_data(interface) + addr = get_addr(interface) + return nil unless addr + wifi_data = get_wifi_data(interface) + { + address: addr, + ssid: wifi_data[:ssid], + strength: wifi_data[:strength] + } +end -conf = `iwconfig #{interface}` +interfaces = ENV['BLOCK_INSTANCE']&.split(',') || %w[wlp4s0] -ssid = conf.match(/ESSID:"(.+)"\s*$/)[1].to_s +data = interfaces.map { |i| get_data(i) }.compact.first -quality, max_quality = conf.match(/Link Quality=(\d+)\/(\d+)/).to_a[1..2].map(&:to_f) +exit if data.nil? -strength = ((quality / max_quality) * 100).round +address = data[:address] +ssid = data[:ssid] +strength = data[:strength] -long = "#{ssid}: #{address} #{strength}%" -short = "#{strength}%" +if strength + long = "#{ssid}: #{address} #{strength}%" +else + long = "#{ssid}: #{address}" +end +short = "#{strength || 100}%" if ENV['BLOCK_BUTTON'].to_i == 2 require 'open3' @@ -38,4 +71,4 @@ end puts long puts short -puts color strength +puts color strength if strength