# Usage

Every lain widget is a table.

A lain widget is generated by a `function`.

The `function` signature, input and output arguments can be found in the [related wiki entry](https://github.com/lcpz/lain/wiki/Widgets#index).

Every lain widget contains a `wibox.widget`, which is updated by a timed function. To access the widget, use the field `widget`, to access the timed function, use the field `update`. Some lain widgets may also have an `icon` field, which is a `wibox.widget.imagebox`, and/or a `timer` field, which is the `gears.timer` on `update`.

Every `function` may take either a table or a list of variables as input.

If the input is a table, you must define a function variable called `settings` in it. There you will be able to define `widget` appearance.

For instance, if `widget` is a textbox, to markup it call `widget:set_markup(...)` within `settings`.

In the scope of `settings` you can use predefined arguments, which are specified in the wiki entries.

Example of a lain widget:

```lua
local cpu = lain.widget.cpu {
    settings = function()
        widget:set_markup("Cpu " .. cpu_now.usage)
    end
}
-- to access the widget: cpu.widget
```

Given the asynchronous nature of these widgets, be sure to use a [defensive programming](https://github.com/lcpz/lain/issues/451#issuecomment-615450523) style when you write your configuration. You can find various examples of this in [awesome-copycats](https://github.com/lcpz/awesome-copycats).

# Index

- [alsa](https://github.com/lcpz/lain/wiki/alsa)
- [alsabar](https://github.com/lcpz/lain/wiki/alsabar)
- [bat](https://github.com/lcpz/lain/wiki/bat)
- [cal](https://github.com/lcpz/lain/wiki/cal)
- [cpu](https://github.com/lcpz/lain/wiki/cpu)
- [fs](https://github.com/lcpz/lain/wiki/fs)
- [imap](https://github.com/lcpz/lain/wiki/imap)
- [mem](https://github.com/lcpz/lain/wiki/mem)
- [mpd](https://github.com/lcpz/lain/wiki/mpd)
- [net](https://github.com/lcpz/lain/wiki/net)
- [pulse](https://github.com/lcpz/lain/wiki/pulse)
- [pulsebar](https://github.com/lcpz/lain/wiki/pulsebar)
- [sysload](https://github.com/lcpz/lain/wiki/sysload)
- [temp](https://github.com/lcpz/lain/wiki/temp)
- [weather](https://github.com/lcpz/lain/wiki/weather)

## User contributions

- [moc](https://github.com/lcpz/lain/wiki/moc)
- [redshift](https://github.com/lcpz/lain/wiki/redshift)
- [task](https://github.com/lcpz/lain/wiki/task)
- [tp_smapi](https://github.com/lcpz/lain/wiki/tp_smapi)
