[modules] Adjust update schedules

Make a few modules update more seldomly, to reduce CPU consumption.
This commit is contained in:
tobi-wan-kenobi 2020-04-02 16:30:31 +02:00
parent 0f6dfb3f1a
commit 18154dd74f
7 changed files with 24 additions and 12 deletions

View file

@ -1,11 +1,11 @@
import util.format import util.format
def every(minutes=0, seconds=0): def every(hours=0, minutes=0, seconds=0):
def decorator_init(init): def decorator_init(init):
def call_init(obj, *args, **kwargs): def call_init(obj, *args, **kwargs):
init(obj, *args, **kwargs) init(obj, *args, **kwargs)
if obj.parameter('interval') is None: if obj.parameter('interval') is None:
obj.set('interval', minutes*60 + seconds) obj.set('interval', hours*3600 + minutes*60 + seconds)
return call_init return call_init
return decorator_init return decorator_init

View file

@ -1,12 +1,12 @@
# pylint: disable=C0111,R0903 # pylint: disable=C0111,R0903
'''Displays the brightness of a display """Displays the brightness of a display
Parameters: Parameters:
* brightness.step: The amount of increase/decrease on scroll in % (defaults to 2) * brightness.step: The amount of increase/decrease on scroll in % (defaults to 2)
* brightness.device_path: The device path (defaults to /sys/class/backlight/intel_backlight), can contain wildcards (in this case, the first matching path will be used) * brightness.device_path: The device path (defaults to /sys/class/backlight/intel_backlight), can contain wildcards (in this case, the first matching path will be used)
''' """
import glob import glob
import shutil import shutil
@ -14,8 +14,10 @@ import shutil
import core.module import core.module
import core.widget import core.widget
import core.input import core.input
import core.decorators
class Module(core.module.Module): class Module(core.module.Module):
@core.decorators.every(seconds=30) # takes 30s to pick up on "external" changes
def __init__(self, config): def __init__(self, config):
super().__init__(config, core.widget.Widget(self.brightness)) super().__init__(config, core.widget.Widget(self.brightness))

View file

@ -1,15 +1,17 @@
# pylint: disable=C0111,R0903 # pylint: disable=C0111,R0903
'''Displays the current date and time. """Displays the current date and time.
Parameters: Parameters:
* date.format: strftime()-compatible formatting string * date.format: strftime()-compatible formatting string
* date.locale: locale to use rather than the system default * date.locale: locale to use rather than the system default
''' """
import core.decorators
from .datetime import Module from .datetime import Module
class Module(Module): class Module(Module):
@core.decorators.every(hours=1)
def __init__(self, config): def __init__(self, config):
super().__init__(config) super().__init__(config)

View file

@ -1,6 +1,6 @@
#pylint: disable=C0111,R0903 #pylint: disable=C0111,R0903
'''Displays the name, IP address(es) and status of each available network interface. """Displays the name, IP address(es) and status of each available network interface.
Requires the following python module: Requires the following python module:
* netifaces * netifaces
@ -10,7 +10,7 @@ Parameters:
* nic.include: Comma-separated list of interfaces to include * nic.include: Comma-separated list of interfaces to include
* nic.states: Comma-separated list of states to show (prefix with '^' to invert - i.e. ^down -> show all devices that are not in state down) * nic.states: Comma-separated list of states to show (prefix with '^' to invert - i.e. ^down -> show all devices that are not in state down)
* nic.format: Format string (defaults to '{intf} {state} {ip} {ssid}') * nic.format: Format string (defaults to '{intf} {state} {ip} {ssid}')
''' """
import shutil import shutil
import netifaces import netifaces
@ -18,10 +18,12 @@ import subprocess
import core.widget import core.widget
import core.module import core.module
import core.decorators
import util.cli import util.cli
import util.format import util.format
class Module(core.module.Module): class Module(core.module.Module):
@core.decorators.every(seconds=10)
def __init__(self, config): def __init__(self, config):
widgets = [] widgets = []
super().__init__(config, widgets) super().__init__(config, widgets)

View file

@ -1,6 +1,6 @@
# pylint: disable=C0111,R0903 # pylint: disable=C0111,R0903
'''Displays the current color temperature of redshift """Displays the current color temperature of redshift
Requires the following executable: Requires the following executable:
* redshift * redshift
@ -11,7 +11,7 @@ Parameters:
'auto' uses whatever redshift is configured to do 'auto' uses whatever redshift is configured to do
* redshift.lat : latitude if location is set to 'manual' * redshift.lat : latitude if location is set to 'manual'
* redshift.lon : longitude if location is set to 'manual' * redshift.lon : longitude if location is set to 'manual'
''' """
import threading import threading
import logging import logging
@ -24,6 +24,7 @@ except ImportError:
import core.module import core.module
import core.widget import core.widget
import core.input import core.input
import core.decorators
import util.cli import util.cli
@ -75,6 +76,7 @@ def get_redshift_value(widget, location, lat, lon):
widget.set('transition', ' '.join(line.split(' ')[2:])) widget.set('transition', ' '.join(line.split(' ')[2:]))
class Module(core.module.Module): class Module(core.module.Module):
@core.decorators.every(seconds=10)
def __init__(self, config): def __init__(self, config):
widget = core.widget.Widget(self.text) widget = core.widget.Widget(self.text)
super().__init__(config, widget) super().__init__(config, widget)

View file

@ -1,15 +1,17 @@
# pylint: disable=C0111,R0903 # pylint: disable=C0111,R0903
'''Displays the current date and time. """Displays the current date and time.
Parameters: Parameters:
* time.format: strftime()-compatible formatting string * time.format: strftime()-compatible formatting string
* time.locale: locale to use rather than the system default * time.locale: locale to use rather than the system default
''' """
import core.decorators
from .datetime import Module from .datetime import Module
class Module(Module): class Module(Module):
@core.decorators.every(seconds=59) # ensures one update per minute
def __init__(self, config): def __init__(self, config):
super().__init__(config) super().__init__(config)

View file

@ -23,6 +23,7 @@ import sys
import core.module import core.module
import core.widget import core.widget
import core.input import core.input
import core.decorators
import util.cli import util.cli
import util.format import util.format
@ -33,6 +34,7 @@ except:
pass pass
class Module(core.module.Module): class Module(core.module.Module):
@core.decorators.every(seconds=5) # takes up to 5s to detect a new screen
def __init__(self, config): def __init__(self, config):
widgets = [] widgets = []
super().__init__(config, widgets) super().__init__(config, widgets)