lcpz / lain

Awesome WM complements

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Do not use global variables

lcpz opened this issue · comments

The following widgets use _now global variables:

$ git grep "_now" | cut -d: -f1 | uniq                                                                                                                                                                            
alsa.lua
alsabar.lua
bat.lua
contrib/moc.lua
contrib/tp_smapi.lua
cpu.lua
fs.lua
imap.lua
mem.lua
mpd.lua
net.lua
pulse.lua
pulsebar.lua
temp.lua
weather.lua

We should use table-based variables instead, and thus eliminate the use of widget within a settings() function. Example:

local mpd = lain.widget.mpd {
    settings = function()
        local title  = "mpd"
        local artist = "off"

        if mpd.now.state == "play" then -- instead of `mpd_now`
            title  = mpd.now.title
            artist = mpd.now.artist
        end

        mpd.widget:set_text(title .. " " .. artist) -- instead of `widget:set_text`
    end
}

This will break the current usage.

i can start doing this for the widgets that i actively use (pulsebar, mpd), touched recently for prototyping (weather), and anything else when i feel bored.

as for how this should land wrt #549, i get the sense you want it separated and after it?

PTAL @ https://github.com/razamatan/lain/pull/1/files.

i actually went with the direction of assuming that i would land the libsoup change first, then this one, hence i didn't do a pr yet (and showing the pr diff to address this issue in my own repo). if you feel strongly about flipping the order, i can do the work to put the glob pr before the libsoup one.

lmk.

everything ok..?