Fix dotfiles structure

This commit is contained in:
2026-03-15 10:32:59 +05:30
parent ca014e9949
commit a2c3404cb2
2557 changed files with 148415 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
# Net Speed Widget
The widget and readme is in progress
## Installation
Please refer to the [installation](https://github.com/streetturtle/awesome-wm-widgets#installation) section of the repo.
Clone repo, include widget and use it in **rc.lua**:
```lua
local net_speed_widget = require("awesome-wm-widgets.net-speed-widget.net-speed")
...
s.mytasklist, -- Middle widget
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
...
net_speed_widget(),
...
}
...
```

View File

@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" version="1.1">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#dfdfdf; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<g transform="matrix(1,0,0,1,4,4)">
<path class="ColorScheme-Text" d="M 7,2 V 10 L 3.5,6.5 2,8 8,14 14,8 12.5,6.5 9,10 V 2 Z" style="fill:currentColor"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 410 B

View File

@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" version="1.1">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#dfdfdf; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<g transform="matrix(1,0,0,1,4,4)">
<path class="ColorScheme-Text" d="M 7,14 V 6 L 3.5,9.5 2,8 8,2 14,8 12.5,9.5 9,6 V 14 Z" style="fill:currentColor"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 409 B

View File

@@ -0,0 +1,126 @@
-------------------------------------------------
-- Net Speed Widget for Awesome Window Manager
-- Shows current upload/download speed
-- More details could be found here:
-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/net-speed-widget
-- @author Pavel Makhov
-- @copyright 2020 Pavel Makhov
-------------------------------------------------
local watch = require("awful.widget.watch")
local wibox = require("wibox")
local HOME_DIR = os.getenv("HOME")
local WIDGET_DIR = HOME_DIR .. '/.config/awesome/awesome-wm-widgets/net-speed-widget/'
local ICONS_DIR = WIDGET_DIR .. 'icons/'
local net_speed_widget = {}
local function convert_to_h(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'
else
speed = tonumber(bits)
dim = 'b/s'
end
return math.floor(speed + 0.5) .. dim
end
local function split(string_to_split, separator)
if separator == nil then separator = "%s" end
local t = {}
for str in string.gmatch(string_to_split, "([^".. separator .."]+)") do
table.insert(t, str)
end
return t
end
local function worker(user_args)
local args = user_args or {}
local interface = args.interface or '*'
local timeout = args.timeout or 1
local width = args.width or 55
net_speed_widget = wibox.widget {
{
id = 'rx_speed',
forced_width = width,
align = 'right',
widget = wibox.widget.textbox
},
{
image = ICONS_DIR .. 'down.svg',
widget = wibox.widget.imagebox
},
{
image = ICONS_DIR .. 'up.svg',
widget = wibox.widget.imagebox
},
{
id = 'tx_speed',
forced_width = width,
align = 'left',
widget = wibox.widget.textbox
},
layout = wibox.layout.fixed.horizontal,
set_rx_text = function(self, new_rx_speed)
self:get_children_by_id('rx_speed')[1]:set_text(tostring(new_rx_speed))
end,
set_tx_text = function(self, new_tx_speed)
self:get_children_by_id('tx_speed')[1]:set_text(tostring(new_tx_speed))
end
}
-- make sure these are not shared across different worker/widgets (e.g. two monitors)
-- otherwise the speed will be randomly split among the worker in each monitor
local prev_rx = 0
local prev_tx = 0
local update_widget = function(widget, stdout)
local cur_vals = split(stdout, '\r\n')
local cur_rx = 0
local cur_tx = 0
for i, v in ipairs(cur_vals) do
if i%2 == 1 then cur_rx = cur_rx + v end
if i%2 == 0 then cur_tx = cur_tx + v end
end
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))
prev_rx = cur_rx
prev_tx = cur_tx
end
watch(string.format([[bash -c "cat /sys/class/net/%s/statistics/*_bytes"]], interface),
timeout, update_widget, net_speed_widget)
return net_speed_widget
end
return setmetatable(net_speed_widget, { __call = function(_, ...) return worker(...) end })