LINUX.ORG.RU

awesome, lua, и attempt to perform arithmetic on a nil value

 , ,


0

1

Продолжаю бесконечный процесс обустройства awesome. Стараюсь не особо тревожить почтеннейшую публику просьбами о помощи, но в очередной раз не выдерживаю.

Вопрос в следующем - вот кусок rc.lua:

upwidget = wibox.widget.textbox()
upwidget:set_align("left")
vicious.register(upwidget, vicious.widgets.net, "${wlp2s0f0 up_kb}" .. 'K;', 1 )
upwidget = wibox.layout.constraint(upwidget, "exact", 85, nil)

upprogressbar = awful.widget.progressbar()
vicious.register(upprogressbar, vicious.widgets.net, tostring ( math.floor ( tonumber ( "${wlp2s0f0 up_kb}" ) * 10 ) ), 1 )
upprogressbar:set_width(230)
upprogressbar:set_height(2)
upprogressbar:set_vertical(false)
upprogressbar:set_color('#00ffff88')
upprogressbar:set_background_color('#00000088')

(wlp2s0f0 - это на самом деле беспроводной интерфейс. почему он так причудливо переименовался, я выясню позже, не в этом суть).

upwidget прекрасно работает и выдаёт на-гора численное значение upload скорости.

Но, когда я пытаюсь эту величину впихнуть как параметр в upprogressbar, я получаю описанную в сабже ошибку, свидетельствующую о том, что tonumber вместо числа возвращает nil.

Пресловутое «${wlp2s0f0 up_kb}» принимает значения вида «0.0», «0.5», «1.6», и ничего «нечисленного» я в них ну совершенно не вижу.

Что я делаю не так?

Спасибо за внимание.

★★★★

Ответ на: комментарий от kep

С закомментированной проблемной строчкой:

upwidget = wibox.widget.textbox()
upwidget:set_align("left")
vicious.register(upwidget, vicious.widgets.net, "${wlp2s0f0 up_kb}" .. 'K;', 1 )
upwidget = wibox.layout.constraint(upwidget, "exact", 85, nil)

upprogressbar = awful.widget.progressbar()
-- vicious.register(upprogressbar, vicious.widgets.net, tostring ( math.floor ( tonumber ( "${wlp2s0f0 up_kb}" ) * 10 ) ), 1 )
upprogressbar:set_width(230)
upprogressbar:set_height(2)
upprogressbar:set_vertical(false)
upprogressbar:set_color('#00ffff88')
upprogressbar:set_background_color('#00000088')

скриншот - http://itmag.es/5PhFn (справа внизу сразу над RSS-виджетом)

с раскомментированной строчкой - http://itmag.es/Cwys

piyavking ★★★★ ()

tonumber ( «${wlp2s0f0 up_kb}» )

Это что, шаблонизатор какой-то?

makoven ★★★★★ ()

Здесь

math.floor ( tonumber ( "${wlp2s0f0 up_kb}" ) * 10 )
Пытаешься преобразовать "${wlp2s0f0 up_kb}" в число еще до того как передал ее аргументом в vicious. Кури vicious readme секцию Format functions на предмет того как надо.

Worron ★★★ ()

Уже тебе сказали, но я повторю.

"${wlp2s0f0 up_kb}"
магическим образом не становится значением скорости, этим занимается Vicious после того как ты делаешь vicious.register.

А интерфейс так называется потому что systemd так их называет.

unlog1c ★★★ ()

vicious и тп не очень то нужны если пользуешься веткой мастер, куда удобнее использовать:

http://awesomewm.github.io/apidoc/classes/awful.widget.watch.html

или напрямую

http://awesomewm.github.io/apidoc/libraries/awful.spawn.html#easy_async

actionless ★★★★★ ()
Последнее исправление: actionless (всего исправлений: 2)
Ответ на: комментарий от actionless

отличные фишки, непременно учту, спасибо!

но всё же в данном конкретном случае всё-таки хотел бы разобраться до конца.

piyavking ★★★★ ()
Ответ на: комментарий от piyavking

А интерфейс так называется потому что systemd так их называет.

Не systemd а udev

А сделать с этим что-нибудь можно?

Можно. Вот по такому шаблону:

# cat /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:15.0/0000:04:00.0 (r8169) SUBSYSTEM==«net», ACTION==«add», DRIVERS=="?*", ATTR{address}==«d4:3d:7e:9e:43:1b», ATTR{dev_id}==«0x0», ATTR{type}==«1», KERNEL==«eth*», NAME=«eth0»

В общем гуглить на предмет 70-persistent-net.rules

Darkman ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.