From e8288ef79378c111dbe1cb4bc718776da41e80fc Mon Sep 17 00:00:00 2001 From: Tobias Witek Date: Mon, 23 Mar 2020 15:32:06 +0100 Subject: [PATCH] [core] Add per-module interval configuration Allow individual modules to set different update intervals by using an overriding 'interval' parameter. see #574 --- core/module.py | 1 + core/output.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/core/module.py b/core/module.py index 55ab2ea..4e34b2b 100644 --- a/core/module.py +++ b/core/module.py @@ -36,6 +36,7 @@ class Module(core.input.Object): for widget in self._widgets: widget.module(self) self._name = None + self.next_update = None def parameter(self, key, default=None): value = default diff --git a/core/output.py b/core/output.py index acaff2e..be0dd6a 100644 --- a/core/output.py +++ b/core/output.py @@ -102,10 +102,15 @@ class i3(object): return widgets def update(self, affected_modules=None): + now = time.time() for module in self._modules: if affected_modules and not module.id() in affected_modules: continue + if not affected_modules and module.next_update: + if now < module.next_update: + continue module.update_wrapper() + module.next_update = now + float(module.parameter('interval', self._config.interval())) for widget in module.widgets(): self._status[widget] = widget.full_text()