LINUX.ORG.RU

Как вынести виджеты в отдельный файл?

 ,


0

1

Не хочу пачкать rc.lua тяжелыми виджетами, подскажите пожалуйста на примере этого виджета как их выносить отдельно, спасибо.

local vicious = require("vicious") -- виджет на vicious

widget_fs = wibox.widget.textbox()
vicious.register(widget_fs, vicious.widgets.fs, vspace1 .. "${/ avail_gb}GB" .. vspace1, 2)

Так, чтобы в rc.lua его (widget_fs) можно было поставить на панель.

Например назовем нашу библиотеку widgets, создадим диру ~/.config/awesome/widgets, создадим там файл init.lua и заинклюдим её в rc.lua:

local widgets = require("widgets")

Вопрос: что должно быть в init.lua?

Спасибо.


Хз как это работает в awesome, но в самом lua, тебе достаточно в файле сделать return какой-то структуры данных. Например:
widgets.lua

local widgets = {}

function widgets:test_fn()
  print("hi there!")
end

return widgets

user.lua
local widgets = require("widgets")

widgets:test_fn() -- hi there!

joy4eg ★★★★★ ()

С большой вероятностью init.lua тебе не нужен пока конфиг не разрастется на пяток директорий и десятки файлов.

Вариант А.

Без всяких директорий просто рядом файл widgets.lua

local vicious = require("vicious")

local my_widget_pack = {
    -- здесь все виджеты/переменные к которым планируешь получить доступ
    widget_fs = wibox.widget.textbox(),
    widget_net = ...
}

vicious.register(my_widget_pack.widget_fs, vicious.widgets.fs, vspace1 .. "${/ avail_gb}GB" .. vspace1, 2)
...

return my_widget_pack

В rc.lua

local widgets = require("widgets")
widgets.widget_fs -- твой виджет

Вариант Б.

В поддиректории widgets файл widget_fs.lua

local vicious = require("vicious")

local widget_fs = wibox.widget.textbox()
vicious.register(widget_fs, vicious.widgets.fs, vspace1 .. "${/ avail_gb}GB" .. vspace1, 2)

return widget_fs

В rc.lua

local my_widget_fs = require("widgets.widget_fs") -- твой виджет

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