Source code for i3pystatus.file

from os.path import join

from i3pystatus import IntervalModule


[docs]class File(IntervalModule): """ Rip information from text files components is a dict of pairs of the form: :: name => (callable, file) * Where `name` is a valid identifier, which is used in the format string to access the value of that component. * `callable` is some callable to convert the contents of `file`. A common choice is float or int. * `file` names a file, relative to `base_path`. transforms is a optional dict of callables taking a single argument (a dictionary containing the values of all components). The return value is bound to the key. """ settings = ( "format", "components", "transforms", "base_path", "color", "interval", ) required = ("format", "components") base_path = "/" transforms = {} color = "#FFFFFF" def run(self): cdict = {} for key, (component, file) in self.components.items(): with open(join(self.base_path, file), "r") as f: cdict[key] = component(f.read().strip()) for key, transform in self.transforms.items(): cdict[key] = transform(cdict) self.data = cdict self.output = { "full_text": self.format.format(**cdict), "color": self.color }