shlemisto |
|
Темы:
12
Сообщения:
118
Участник с: 13 декабря 2008
|
Знающие Lua помогите. Как отредактировать net.lua файл таким образом, чтобы строка ${ppp0 up_kb}kb/s ${ppp0 down_kb}kb/s net.lua --------------------------------------------------- -- Licensed under the GNU General Public License v2 -- * (c) 2010, Adrian C. <[email protected]> -- * (c) 2009, Lucas de Vries <[email protected]> --------------------------------------------------- -- {{{ Grab environment local tonumber = tonumber local os = { time = os.time } local io = { lines = io.lines } local setmetatable = setmetatable local string = { match = string.match } local helpers = require("vicious.helpers") -- }}} -- Net: provides usage statistics for all network interfaces module("vicious.widgets.net") -- Initialize function tables local nets = {} -- Variable definitions local unit = { ["b"] = 1, ["kb"] = 1024, ["mb"] = 1024^2, ["gb"] = 1024^3 } -- {{{ Net widget type local function worker(format) local args = {} -- Get NET stats for line in io.lines("/proc/net/dev") do -- Match wmaster0 as well as rt0 (multiple leading spaces) name = string.match(line, "^[%s]?[%s]?[%s]?[%s]?([%w]+):") if name ~= nil then -- Received bytes, first value after the name local recv = tonumber(string.match(line, ":[%s]*([%d]+)")) -- Transmited bytes, 7 fields from end of the line local send = tonumber(string.match(line, "([%d]+)%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d+%s+%d$")) helpers.uformat(args, name .. " rx", recv, unit) helpers.uformat(args, name .. " tx", send, unit) if nets[name] == nil then -- Default values on the first run nets[name] = {} helpers.uformat(args, name .. " down", 0, unit) helpers.uformat(args, name .. " up", 0, unit) nets[name].time = os.time() else -- Net stats are absolute, substract our last reading local interval = os.time() - nets[name].time > 0 and os.time() - nets[name].time or 1 nets[name].time = os.time() local down = (recv - nets[name][1]) / interval local up = (send - nets[name][2]) / interval helpers.uformat(args, name .. " down", down, unit) helpers.uformat(args, name .. " up", up, unit) end -- Store totals nets[name][1] = recv nets[name][2] = send end end return args end -- }}} setmetatable(_M, { __call = function(_, ...) return worker(...) end }) |
villi |
|
Темы:
0
Сообщения:
144
Участник с: 07 декабря 2009
|
shlemisto, что это за строчка, где оная находится? Не в rc.lua, случаем? По моему надо делать проверку на наличие в /proc/net/dev интерфейса ppp0. Любите Вы загадки, блин… |
shlemisto |
|
Темы:
12
Сообщения:
118
Участник с: 13 декабря 2008
|
В rc.lua я только параметр передаю (ррр0) Вилли, насколько я понимаю нужно редактировать именно net.lua , чтобы переданный параметр (в данном случае ppp0), искался в /proc/net/dev и при отсутствии оного функция uformat helpers.uformat(args, name .. " up", 0, unit) Похоже нужно штатными средствами как-то возвращать пустую строчку при отсутствии интерфейса. |
shlemisto |
|
Темы:
12
Сообщения:
118
Участник с: 13 декабря 2008
|
хех, написал )кусок rc.luaправда, есть одна загвоздка, чтобы отобразить/скрыть этот текст на баре нужно каждый раз конфиг перезагружать. Как всё это теперь со временем связать, что бы каждые n минут проверялся /proc/net/dev? |
villi |
|
Темы:
0
Сообщения:
144
Участник с: 07 декабря 2009
|
schlemisto, мне кажется, что надо использовать функцию vicious.unregister(widget, keep) if ... else Что-то типа: ... else visious.unregister(netwidget, 0) end |
shlemisto |
|
Темы:
12
Сообщения:
118
Участник с: 13 декабря 2008
|
Вилли, это хорошо, хотя и результат тотже ) цикл if ... else надо что-то тут править, я думаю кусок net.lua |
villi |
|
Темы:
0
Сообщения:
144
Участник с: 07 декабря 2009
|
schlemisto, ну как у Вас успехи? Вы тут смотрели? wilful там приводил небольшой пример с использованием функции timer(timeout). Честно сказать, виджеты не использую, т.к. пока не вижу в них особой нужды. Как системный монитор, применяю app-admin/conky. На мой взгляд “коньки” удобнее в настройке, плюс - грамотно написаны, спасибо автору :) З.Ы: Админы/Модераторы форума, у меня просьба - верните мне “полноправный участник”, пожалуйста. Не настолько я разбираюсь в Arch'е, чтобы быть “продвинутым юзером” %) |
cucullus |
|
Темы:
257
Сообщения:
3438
Участник с: 06 июня 2007
|
Виллиписать меньше надо было! это теперь не изменишь, могу только забанить ;)
такие дела.
|
shlemisto |
|
Темы:
12
Сообщения:
118
Участник с: 13 декабря 2008
|
Вилли таймер же как работает: N секунд проходит и он снова запускает тот кусок кода, который помещён в его (таймера) “тело”? Тогда ещё одна проблемка появилась… ))) значит-с, теперь скорость перестала показываться, из - за рассинхронизации, наверное, т.е., если время в таймере и в виджете одинаковое, то они же не в абсолютно равное время стартуют, а с некоторой задержкой => таймер уже обновился, а виджет вот, только-только, и по-этому не хочет выводить инфу :( С разным временем, понятно, что не заработает ( коньки-то вещь хорошая, да только у меня практически всё время рабочий стол закрыт окнами; а хочется, чтобы необходимая информация на виду была. А мостить на мой 10дюймовик некуда, и так сверху и снизу бары ) |
wilful |
|
Темы:
23
Сообщения:
312
Участник с: 24 мая 2009
|
cucullusВиллиписать меньше надо было! это теперь не изменишь, могу только забанить ;) хаха, отличный вариант Вилли? xD |