make sure that for a given event (widget/object/module, whatever), only
a *single* input event per button can be registered at one time.
the problem otherwise is with modules that re-register their widgets
with the same IDs (cmus, spotify, etc.): Each time the widget is
re-created (each intervall, typically), it re-registers an input event,
creating an always longer list of callbacks being executed when the
button is clicked (not speaking of the memory leak this introduces).
fixes#668
Make sure that iconsets used as part of a theme do *not* override
anything already existing inside the theme.
Only iconsets that are manually specified can override settings in the
theme now (because those, you typically specify on the CLI).
TODO: Write unit test for this
fixes#666
to enable reading the brightness from ACPF, set the device path and -
other than previously - explicitly enable this by setting the parameter
"brightness.use_acpi" to "true".
fixes#665
in sway/wayland, make sure that the wayland socket is cleared, which
seems to cause issue for some unspecified reason.
also, while at it, improve code so that the environment dict that is
passed in is *not* modified.
fixes#628
make it possible to toggle the display state of a widget between
"displayed" and "minimized" also for modules that re-create their
widgets during each iteration.
see #661
by default, allow toggling the minimized state of a widget via the
middle mouse and draw a single unicode char instead of the actual
widget, maintaining all states.
fixes#661
* First, make iconsets override anything already present in the "base"
configuration
* Second, make sure that CLI provided iconsets have higher priority than
"built-in" ones
see #648
Previous code accepted the "first" hit in a theme - particularly, if a
module is called "A" and a *different* module "B" uses "A" as state, a
widget of module B with state A would be themed as *module* A, wrongly.
Essentially, made sure that the last (most specific) themeing "wins".
fixes#647
a module can now set `self.background = True` in its `__init__()` method
to make sure its update method is invoked in a separate thread.
also, do a PoC implementation of this for the github module.
TODO: add this to dev doc
see #640