tangled
alpha
login
or
join now
sharparam.com
/
dotfiles
0
fork
atom
this repo has no description
dotfiles
0
fork
atom
overview
issues
pulls
pipelines
[i3] Handle alternative network interfaces
sharparam.com
2 years ago
c3ad0ca3
621126b5
+46
-13
2 changed files
expand all
collapse all
unified
split
config
i3blocks
config
i3blocks
sharp-wifi.rb
+1
-1
config/i3blocks/config
···
83
83
[sharp-wifi]
84
84
command=/home/sharparam/.dotfiles/i3blocks/sharp-wifi.rb
85
85
label=
86
86
-
instance=wlp4s0
86
86
+
instance=wlp4s0,enp0s31f6,enp0s20f0u2
87
87
interval=10
88
88
89
89
# Memory usage
+45
-12
i3blocks/sharp-wifi.rb
···
12
12
end
13
13
end
14
14
15
15
-
interface = ENV['BLOCK_INSTANCE'] || 'wlp4s0'
15
15
+
def get_addr(interface)
16
16
+
has_addr = `ip -color=never addr show #{interface}` =~ /inet6? ([^\/]+)\//
17
17
+
has_addr ? $1 : nil
18
18
+
end
16
19
17
17
-
has_addr = `ip addr show #{interface}` =~ /inet6? ([^\/]+)\//
20
20
+
def get_wifi_data(interface)
21
21
+
conf = `iwconfig #{interface} 2>/dev/null`
22
22
+
has_ssid = conf =~ /ESSID:"(.+)"\s*$/
23
23
+
if has_ssid
24
24
+
ssid = $1
25
25
+
quality, max_quality = conf.match(/Link Quality=(\d+)\/(\d+)/).to_a[1..2].map(&:to_f)
26
26
+
strength = ((quality / max_quality) * 100).round
27
27
+
{
28
28
+
ssid: ssid,
29
29
+
strength: strength
30
30
+
}
31
31
+
else
32
32
+
{
33
33
+
ssid: interface,
34
34
+
strength: nil
35
35
+
}
36
36
+
end
37
37
+
end
18
38
19
19
-
exit unless has_addr
20
20
-
21
21
-
address = $1
39
39
+
def get_data(interface)
40
40
+
addr = get_addr(interface)
41
41
+
return nil unless addr
42
42
+
wifi_data = get_wifi_data(interface)
43
43
+
{
44
44
+
address: addr,
45
45
+
ssid: wifi_data[:ssid],
46
46
+
strength: wifi_data[:strength]
47
47
+
}
48
48
+
end
22
49
23
23
-
conf = `iwconfig #{interface}`
50
50
+
interfaces = ENV['BLOCK_INSTANCE']&.split(',') || %w[wlp4s0]
24
51
25
25
-
ssid = conf.match(/ESSID:"(.+)"\s*$/)[1].to_s
52
52
+
data = interfaces.map { |i| get_data(i) }.compact.first
26
53
27
27
-
quality, max_quality = conf.match(/Link Quality=(\d+)\/(\d+)/).to_a[1..2].map(&:to_f)
54
54
+
exit if data.nil?
28
55
29
29
-
strength = ((quality / max_quality) * 100).round
56
56
+
address = data[:address]
57
57
+
ssid = data[:ssid]
58
58
+
strength = data[:strength]
30
59
31
31
-
long = "#{ssid}: #{address} #{strength}%"
32
32
-
short = "#{strength}%"
60
60
+
if strength
61
61
+
long = "#{ssid}: #{address} #{strength}%"
62
62
+
else
63
63
+
long = "#{ssid}: #{address}"
64
64
+
end
65
65
+
short = "#{strength || 100}%"
33
66
34
67
if ENV['BLOCK_BUTTON'].to_i == 2
35
68
require 'open3'
···
38
71
39
72
puts long
40
73
puts short
41
41
-
puts color strength
74
74
+
puts color strength if strength