--DOC_GEN_IMAGE --DOC_HIDE --DOC_NO_USAGE --DOC_NO_DASH
local parent = ... --DOC_HIDE
local gears = { --DOC_HIDE
object = require("gears.object"), --DOC_HIDE
reactive = require("gears.reactive") --DOC_HIDE
} --DOC_HIDE
local wibox = require("wibox") --DOC_HIDE
-- It's important to set 'enable_auto_signals' to `true` or it wont work.
--
-- Note that most AwesomeWM objects (and most modules) objects can be
-- used directly as long as they implement the signal `property::` spec.
--
-- So you don't *need* a hub object, but it's safer to use one.
local my_hub = gears.object {
enable_properties = true,
enable_auto_signals = true
}
--DOC_NEWLINE
-- Better set a default value to avoid weirdness.
my_hub.some_property = 42
--DOC_NEWLINE
-- This is an example, in practice do this in your
-- wibar widget declaration tree.
local w = wibox.widget {
markup = gears.reactive(function()
-- Each time `my_hub.some_property` changes, this will be
-- re-interpreted.
return '' .. (my_hub.some_property / 100) .. ''
end),
widget = wibox.widget.textbox
}
--DOC_NEWLINE
-- This will update the widget text to '13.37'
my_hub.some_property = 1337
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
require("gears.timer").run_delayed_calls_now() --DOC_HIDE
assert(w) --DOC_HIDE
assert(w.markup == "13.37") --DOC_HIDE
parent:add(w) --DOC_HIDE