summaryrefslogtreecommitdiff
path: root/net-speed-widget
diff options
context:
space:
mode:
authorzachir <zachir@librem.one>2023-11-19 15:20:14 -0600
committerzachir <zachir@librem.one>2023-11-19 15:20:14 -0600
commit15f4ff3a389cce34f2134c4b65414b1204a0f43f (patch)
tree692767df64708dc2b0c2750133a14299c775ca16 /net-speed-widget
parentc7a6cdb5c0535aec008e397e89be891734f3917f (diff)
Improve/fix logic for using bit or byte in net-speedHEADmaster
There is now an argument (bits_not_bytes) that will change the unit for calculating net speed. Setting it to "true", the widget will use bits instead of bytes. Setting it to "false" (or not setting it), the widget will use bytes.
Diffstat (limited to 'net-speed-widget')
-rw-r--r--net-speed-widget/net-speed.lua42
1 files changed, 25 insertions, 17 deletions
diff --git a/net-speed-widget/net-speed.lua b/net-speed-widget/net-speed.lua
index d67d86a..dd724a3 100644
--- a/net-speed-widget/net-speed.lua
+++ b/net-speed-widget/net-speed.lua
@@ -17,25 +17,32 @@ local ICONS_DIR = WIDGET_DIR .. 'icons/'
local net_speed_widget = {}
-local function convert_to_h(bytes)
+local function convert_to_h(bytes, bits_not_bytes)
local speed
local dim
local bits = bytes * 8
- if bits < 1000 then
- speed = bits
- dim = 'B/s'
- elseif bits < 1000000 then
- speed = bits/1000
- dim = 'KB/s'
- elseif bits < 1000000000 then
- speed = bits/1000000
- dim = 'MB/s'
- elseif bits < 1000000000000 then
- speed = bits/1000000000
- dim = 'GB/s'
+ if bits_not_bytes then
+ units = bits
+ unitsuffix = 'bps'
else
- speed = tonumber(bits)
- dim = 'b/s'
+ units = bytes
+ unitsuffix = 'Bps'
+ end
+ if units < 1000 then
+ speed = units
+ dim = unitsuffix
+ elseif units < 1000000 then
+ speed = units/1000
+ dim = 'K' .. unitsuffix
+ elseif units < 1000000000 then
+ speed = units/1000000
+ dim = 'M' .. unitsuffix
+ elseif units < 1000000000000 then
+ speed = units/1000000000
+ dim = 'G' .. unitsuffix
+ else
+ speed = tonumber(units)
+ dim = unitsuffix
end
return math.floor(speed + 0.5) .. dim
end
@@ -59,6 +66,7 @@ local function worker(user_args)
local interface = args.interface or '*'
local timeout = args.timeout or 1
local width = args.width or 100
+ local bits_not_bytes = args.bits_not_bytes
net_speed_widget = wibox.widget {
{
@@ -108,8 +116,8 @@ local function worker(user_args)
local speed_rx = (cur_rx - prev_rx) / timeout
local speed_tx = (cur_tx - prev_tx) / timeout
- widget:set_rx_text(convert_to_h(speed_rx))
- widget:set_tx_text(convert_to_h(speed_tx))
+ widget:set_rx_text(convert_to_h(speed_rx), bits_not_bytes)
+ widget:set_tx_text(convert_to_h(speed_tx), bits_not_bytes)
prev_rx = cur_rx
prev_tx = cur_tx